当前位置: 首页 > 编程语言 > C#

CacheControl-NoStorage,MustRevalidateNotSenttoClientBrowserinIIS7+ASP.NETMVC分享

时间:2023-04-11 10:44:00 C#

CacheControl:NoStorage,MustRevalidateNotSenttoIIS7+ASP.NETMVC我正在尝试确保当用户点击后退按钮时,某个页面永远不会被缓存和显示。这个评价很高的答案(到目前为止有1068票)说要使用:Response.AppendHeader("Cache-Control","no-cache,no-store,must-revalidate");Response.AppendHeader("Pragma","no-cache");Response.AppendHeader("过期","0");但是在IIS7/ASP.NETMVC中,客户端在我发送它们时会看到这些响应标头:Cache-control:private,s-maxage=0//这不是我将它们设置为Pragma:no-cacheExpires:0发生了什么缓存控制标头?IIS7或ASP.NET本机中的某些内容会覆盖它吗?我检查了我的解决方案,我没有覆盖此标头的代码。当我添加Response.Headers.Remove("Cache-Control");首先,它没有区别:Response.Headers.Remove("Cache-Control");Response.AppendHeader("Cache-Control","no-cache,no-store,must-revalidate");Response.AppendHeader("Pragma","no-cache");Response.AppendHeader("过期","0");添加[OutputCache]属性时:[OutputCache(Location=OutputCacheLocation.None)]publicActionResultDoSomething(){Response.Headers.Remove("Cache-Control");Response.AppendHeader("Cache-Control","no-cache,no-store,must-revalidate");Response.AppendHeader("Pragma","no-cache");Response.AppendHeader("过期","0");varmodel=DoSomething();返回视图(模型);然后客户端响应标头更改为:Cache-control:no-cachePragma:no-cacheExpires:0更接近,但仍然不是我要发送的标头。这些标头在哪里被覆盖?如何阻止它?编辑:我检查过错误的标头被发送到Chrome、FF、IE和Safari,所以它似乎是服务器问题而不是浏览器相关问题。通过反复试验,我发现在ASP.NETMVC中正确设置IIS7标头的一种方法是:Response.Cache.SetCacheability(HttpCacheability.NoCache);Response.Cache.AppendCacheExtension("无存储,必须重新验证");Response.AppendHeader("Pragma","no-cache");Response.AppendHeader("过期","0");第一行设置Cache-control为no-cache,第二行添加其他属性no-store,must-revalidate。这可能不是唯一的方法,但它确实提供了另一种更简单的方法Response.AppendHeader("Cache-control","no-cache,no-store,must-revalidate");,Response.AppendHeader("Cache-control","no-cache,no-store,must-revalidate");失败。其他可能由此解决的IIS7缓存控制相关问题是:以上是C#学习教程:缓存控制:无存储,必须重新验证IIS7+ASP.NETMVC中未发送到客户端浏览器共享的所有内容,如果正确大家都是很有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢