lee*_*d00 427 html firefox internet-explorer caching asp.net-web-api
我读到,当您无法访问Web服务器的标头时,您可以使用以下命令关闭缓存:
<meta http-equiv="Cache-Control" content="no-store" />
Run Code Online (Sandbox Code Playgroud)
但我也读到这在某些版本的IE中不起作用.是否有任何<meta>标签可以关闭所有浏览器中的缓存?
小智 701
请参阅此处的答案: 如何在所有浏览器中控制网页缓存?
该列表只是不同技术的示例,不是直接插入.如果复制,第二个将覆盖第一个,第四个将覆盖第三个,因为http-equiv声明和W3C验证器失败.最多可以有一个http-equiv声明中的一个; 编译指示,缓存控制和过期.使用现代最新的浏览器时,这些已完全过时.无论如何IE9之后.如果有的话,Chrome和Firefox特别不能像你期望的那样使用它们.
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Run Code Online (Sandbox Code Playgroud)
缓存标头在元元素中是不可靠的; 例如,站点和用户之间的任何Web代理都将完全忽略它们.您应该始终为标头(如Cache-Control和Pragma)使用真正的HTTP标头.
小智 78
这是对行业范围内对控制缓存的误解的一个很好的案例研究的链接.
http://securityevaluators.com/knowledge/case_studies/caching/
总之,根据这篇文章,只有Cache-Control: no-storeChrome,Firefox和IE 才能识别.IE识别其他控件,但Chrome和Firefox不识别.
bob*_*nce 24
它在IE5中不起作用,但这不是一个大问题.
但是,缓存标题在元元素中是不可靠的; 例如,站点和用户之间的任何Web代理都将完全忽略它们.您应该始终为标头(如Cache-Control和Pragma)使用真正的HTTP标头.
实用是您最好的选择:
<meta http-equiv="Pragma" content="no-cache">
Run Code Online (Sandbox Code Playgroud)
小智 6
我注意到在重复相同的服务调用(长轮询)时服务调用存在一些缓存问题.添加元数据没有帮助.一种解决方案是传递a timestamp以确保ie认为它是不同的http服务请求.这对我有用,所以添加一个服务器端脚本代码片段来自动更新这个标签不会有害:
<meta http-equiv="expires" content="timestamp">