我有一个ASP.NET MVC应用程序,它使用区域来提供不同的功能,具体取决于击中哪个URL。例如
所以,重点是根据传入的URL,我们将您路由到不同的MVC区域。这一切都是使用带有一些扩展的路由完成的,并且效果很好。
现在,如果我在我的www默认路由的Index()Action上启用outputcache,下次我点击app.domain.com时,我会获得www域的缓存版本。我使用fiddler进行了检查,响应是200 OK,所以它肯定会打到服务器上。但是,我的自定义路由中的日志记录告诉我它没有达到该代码。
那么,OutputCache不能基于uri工作而是使用其他算法吗?
由于
答案 0 :(得分:2)
[OutputCache(VaryByHeader =“Host”)]应该有所帮助。
答案 1 :(得分:0)
行为取决于您决定存储缓存的位置(Location属性)。如果您将缓存存储在服务器上(OutputCacheLocation.Server
),那么执行操作的结果将存储在服务器上,当对此操作发出后续请求时,服务器将被命中,它将直接命中返回缓存版本而不执行控制器操作,这是您描述的行为。
如果将缓存存储在客户端(OutputCacheLocation.Client
)上,则缓存将保留在客户端浏览器上。在这种情况下,如果对同一操作发出后续请求,则客户端将不再命中服务器,而是直接从其缓存中提供该页面。请记住,如果您在浏览器中点击 F5 ,您将使给定页面的缓存失效,因此服务器将被命中。