【问题标题】:OutputCache Stopped Working输出缓存停止工作
【发布时间】:2013-09-17 21:50:07
【问题描述】:

我不确定是什么原因造成的,但我们的控制器操作用于缓存其输出,但它不再这样做了:

[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

【问题讨论】:

  • 您是否传递了不同的slug 参数?
  • 是的,slug 可以是“car-forum”或“bike-forum”的例子。
  • 对,但是,我想你不是每次都传递不同的参数?对于每个参数,数据库将每 3600 秒命中一次。
  • 有趣。你能在你的方法中显示代码吗?
  • 另外,您能否发布您从服务器获得的响应的 HTTP 标头?

标签: asp.net-mvc asp.net-mvc-3 outputcache


【解决方案1】:

问题是我在控制器操作中设置了一个 cookie 值:

HttpContext.Response.Cookies.Add(myCookie);

这改变了标题:

Cache-Control: public, max-age=1295931

到这里:

Cache-Control: public, no-cache="Set-Cookie", max-age=1296000

通过注释添加 cookie 的行,页面再次缓存。

【讨论】:

  • 那么你是如何在没有得到 no-cache="Set-Cookie" 的情况下添加你的 cookie 的呢?
  • 如果我没记错的话,我相信我用过 jQuery Cookie $.cookie()
猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-07
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多