【发布时间】:2014-03-27 19:10:42
【问题描述】:
我有一个默认页面,可以显示 3 种不同的内容,具体取决于:
- 用户未登录
- 用户已登录但尚未设置任何内容
- 用户已登录并进行了设置
实际情况是,(1) 和 (2) 有时会在应该显示为另一个时显示。在我 ctrl-r 后,显示正确的版本。
这与浏览器的后退按钮无关,它发生在单击菜单选项以转到默认页面或执行一些将用户带到默认页面的操作之后。
我还为该页面设置了一个路由,以便可以在其上附加用户名。例如:http://www.example.com/user1234
我提到这个以防它可能与它有关。
这是我试图停止缓存的原因:
<%@ OutputCache Location="None" VaryByParam="None" %>
那没用,所以我尝试了(在 Page_Load 中):
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache)
Response.Cache.SetNoStore()
任何想法我做错了什么?
预计到达时间
根据几个cmets,我在Chrome隐身模式下尝试过,没有问题。我也尝试打开控制台来查看标题,但不幸的是问题消失了。无论如何,这是标题:
请求
GET / HTTP/1.1 主机:localhost:2873 连接:keep-alive
缓存控制:max-age=0 接受: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 用户代理:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, 像壁虎)Chrome/34.0.1847.92 Safari/537.36 参考:.../signin 接受编码:gzip,deflate,sdch 接受语言:en-US,en;q=0.8
饼干:...
回应
HTTP/1.1 200 OK Cache-Control: no-cache, no-store Pragma: no-cache 内容类型:文本/html; charset=utf-8 内容编码:gzip
过期:-1 变化:接受编码服务器:Microsoft-IIS/8.0
X-AspNet 版本:4.0.30319 X-SourceFiles:=?UTF-8?B?...
X-Powered-By:ASP.NET 日期:2014 年 3 月 27 日星期四 20:17:39 GMT
内容长度:3045
ETA2
我在 Chrome 中进行了测试,我刚刚发现在 FireFox 中没有问题。
如果我登录/退出/进入/退出...没有问题
如果我登录/注销然后用错误的密码登录了几次(导致登录页面中的回发),然后再次正确登录,它总是在 Chrome 中显示不正确的注销页面。
【问题讨论】:
-
这在 Chrome Incognito 中是否正常工作? (这可能有助于排除任何编码问题)。如果您使用 Fiddler,您是否看到它在显示错误的情况下发出请求? (我假设您没有看到请求 - 它确实正在加载缓存副本)
-
如果没有 Fiddler,可以使用 Chrome 开发工具。响应标头是否具有 max-age=0 和/或 no-cache 值?
-
一些很棒的想法,谢谢,我会尝试一下......
-
好的,它在隐身模式下工作正常。不幸的是,量子效应会在控制台打开时发挥作用,但不会发生。我将为默认页面添加请求和响应标头,当它工作时,无论如何。
-
你是否使用任何 URL 重写?
标签: asp.net caching browser-cache