【发布时间】:2012-07-16 16:23:13
【问题描述】:
我回到了 MVC 应用程序,我认为输出缓存按预期工作。但是,在重新访问它时,我发现我使用的 OutputCache 属性没有效果(Duration 设置为高值)。无论我是否添加它,我的操作中的断点总是会被命中,并且 Firebug 在每种情况下都会在请求的页面上向我显示 200 OK。
在我使用 VaryByCustom 的更复杂的操作中,从不调用 global.asax 中的 GetVaryByCustomString 方法。我知道它在过去被调用,因为我可以在那里调试,但现在不是。
我想知道我做了什么来打破这个......有什么想法吗?
(为了不仅测试 localhost,我使用了 dyndns.org 地址,使其成为有效的外部 URL。我还使用 IIS)。
更新:当我使用 localhost URL 时,定位相同的 url 不会再次输入操作代码。按F5可以。使用互联网 URL 时,它总是访问操作代码。
更新 2:Fiddler 在响应标头中显示:
200 OK
Cache:
Cache-Control: public, no-cache="Set-Cookie", max-age=86400
Date: Mon, 16 Jul 2012 19:38:46 GMT
Expires: Tue, 17 Jul 2012 19:38:46 GMT
Vary: *
Expires = Date + 24h 每次我请求相同的 url,这表明每次提供一个新页面。我也应该第一次得到 200,之后得到 304。
【问题讨论】:
-
OutputCache 属性是应用在控制器级别还是操作级别?
-
在动作层应用。
-
使用 fiddler 测试缓存并确保 web.config 反映发布
-
@RickAndMSFT 更新了答案。我不知道还要调查什么...
标签: asp.net-mvc asp.net-mvc-3 mobile outputcache 51degrees