【发布时间】:2015-05-05 00:43:37
【问题描述】:
我不知道为什么我的应用程序没有缓存首页。
我在页面上放置了一个日期戳:@DateTime.Now
这是 Home 控制器操作
[OutputCache(Duration = 60)]
public ActionResult Index()
{
return View();
}
但是,缓存不起作用,首页不断更改日期。
我已尝试将首页和相关布局减少到最低限度,因此只有 DateTime.Now 被标记。
我已检查所有基本控制器是否有任何禁用缓存代码。
还检查了 global.asax
检查 web.config 是否有任何缓存配置 - 无。
用提琴手检查。这是响应头。
HTTP/1.1 200 OK
Cache-Control: public, no-cache="Set-Cookie", max-age=60
Content-Type: text/html; charset=utf-8
Expires: Wed, 04 Mar 2015 05:20:45 GMT
Last-Modified: Wed, 04 Mar 2015 05:19:45 GMT
Vary: *
我也尝试了不同的浏览器,它们不会修改任何本地缓存设置。
还尝试将应用程序部署到阶段服务器,这样它就不会在我的开发机器上运行。
尝试制作一个全新的 asp.net mvc 应用程序。那确实奏效了。至少在告诉我该技术有效方面有些帮助。
问题可能出在哪里?
【问题讨论】:
-
我不确定这是否对您有帮助,但如果您的“首页”恰好使用 [Authorize] 属性(它可以注册为全局过滤器),[Authorize] 属性将禁用输出缓存。
-
ty,很好的提示。不使用授权并检查控制器继承的任何其他属性。
-
依靠浏览器缓存
text/html的方式甚至不会从服务器重新请求它,这不太可能在大多数现代浏览器中工作。如果您希望看到您的时间戳在 60 秒内没有变化,请将缓存副本存储在服务器中:[OutputCache(Duration = 60, Location = OutputCacheLocation.Server)]。
标签: asp.net asp.net-mvc-3 caching outputcache