Est*_*ada 3 cache-control asp-classic
我需要一些不在经典ASP应用程序上缓存的页面,但我已经尝试了所有可能的标题组合,似乎没有任何工作:
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.CacheControl = "no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0"
Response.AddHeader "Cache-Control", "no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0" ' Same as previous line, I know, just in case.
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "Expires", "-1"
Run Code Online (Sandbox Code Playgroud)
我也尝试重新启动网站和IIS,但无济于事.当我离开页面并使用浏览器的后退按钮返回页面时,它不会重新加载.
我在这里错过了什么?
编辑:经过更多的谷歌搜索,我发现并实现了这个JavaScript解决方案,它不是防弹,因为它是客户端的,我更喜欢服务器端解决方案,但它完成了工作!
不过,我想听听任何服务器端选项.
您的印象是浏览器的后退按钮的结果与HTTP缓存有关,但事实并非如此.
提供后退按钮由浏览器决定,从HTTP堆栈的角度来看应用程序.应用程序没有义务考虑用于呈现窗口内容的任何http请求的缓存要求.实际上,许多浏览器能够显示通过除http以外的其他协议传送的内容.
考虑使用后退按钮的最常见方案.用户从网络搜索引擎(google,bing,...)获取一些搜索结果,点击其中一个结果,快速看到内容不是他们要查找的内容,然后点击后退按钮.为了优化用户的体验,当从页面导航时,大多数浏览器将保持页面的许多资源(甚至是页面呈现的窗口).然后可以通过重新组装这些资源或甚至简单地再次使原始窗口可见来实现后退按钮.
看起来不错.. 尝试使用这个。
在向用户发送任何 HTML之前运行这些语句,即在任何Response.Write或<%=foo()%>
Response.Buffer = True
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
Run Code Online (Sandbox Code Playgroud)
更正了拼写错误的单词 Response。