我不确定是什么导致这种情况,但我们的控制器操作用于缓存其输出,但它不再这样做:
[HttpGet]
[OutputCache(VaryByParam = "slug", Duration = 3600)]
public ContentResult Index(string slug)
{
// each call to the page returns a new tick value
var viewData = DateTime.Now.Ticks.ToString();
return View(viewData);
}
之前,我可以调试页面,在Index方法中放置一个断点,第一次调用页面会触发断点,后续调用也不会。现在,每次调用页面都会触发断点。
即使我正在运行站点(不是调试),我也可以跟踪操作中的SQL调用,在第一次调用后不应该调用它。
我不知道它何时停止工作,但我们最近升级到.Net 4.0和MVC 3。
非常感谢。
修改
以下是页面回复的标题:
Cache-Control public, no-cache="Set-Cookie", max-age=1296000
Content-Encoding gzip
Content-Length 5414
Content-Type text/html; charset=utf-8
Date Wed, 18 Sep 2013 00:33:23 GMT
Expires Thu, 03 Oct 2013 00:33:20 GMT
Last-Modified Wed, 18 Sep 2013 00:33:20 GMT
Server Microsoft-IIS/7.5
Set-Cookie tag=tech; expires=Thu, 19-Sep-2013 00:33:23 GMT; path=/
Vary *
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
X-Powered-By ASP.NET
答案 0 :(得分:2)
问题是我在控制器操作中设置了一个cookie值:
HttpContext.Response.Cookies.Add(myCookie);
改变了标题:
Cache-Control: public, max-age=1295931
对此:
Cache-Control: public, no-cache="Set-Cookie", max-age=1296000
通过评论添加了cookie的行,页面再次缓存。