代码之家  ›  专栏  ›  技术社区  ›  Tawani

使ASP.NET MVC应用程序Web场就绪

  •  17
  • Tawani  · 技术社区  · 14 年前

    什么是使ASP.NET MVC应用程序Web场就绪的最有效方法?

    最重要的是共享当前用户的信息(上下文)和(不太重要的)缓存对象,如查找项(州、街道类型、县等)。

    我听说过/读过memcache,但还没有看到一个简单的适用方法(文档)来实现和测试它。

    1 回复  |  直到 10 年前
        1
  •  21
  •   ADH    10 年前

    请求上下文
    任何访问Web场的请求都由可用的IIS服务器提供服务。在那里创建上下文,整个请求由同一个服务器提供服务。所以上下文不应该是问题。请求是无状态执行管道,因此不需要以任何形式与其他服务器共享数据。它将由同一台机器从头到尾提供。
    用户信息从cookie中读取,并由服务请求的服务器处理。这取决于您是否在某个地方缓存完整的用户对象。

    会话
    如果你使用 TempData 字典你应该知道它存储在里面 Session 字典。在服务器场中,这意味着您应该使用InProc会话以外的其他方法,因为它们不在该服务器场中的IIS服务器之间共享。您应该配置使用数据库或其他数据库(状态服务器等)的其他会话管理器。

    隐藏物
    说到缓存,情况就不同了。为了使其尽可能高效,还应该提供缓存。默认情况下不是。但是查看缓存,它几乎不意味着当没有缓存时,它应该被读取并存储在缓存中。所以,如果一个特定的服务器场服务器没有某个缓存对象,它就会创建它。最终,他们都会缓存一些共享的公共数据。
    或者…你可以使用像 内存缓存 (正如您提到的)并利用共享缓存。网上有几个关于如何使用它的例子。

    但这些解决方案都会带来一些额外的开销(如网络、第三进程处理和数据获取等),如果没有其他的话。所以默认缓存是最快的,如果您显式地需要共享缓存,那么就选择一个。除非确实需要,否则不要共享缓存。