我在这个页面上有这个代码:
<!-- no cache headers -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<!-- end no cache headers -->
当我转到其他页面并点击浏览器的按钮(返回到此代码所写的页面)时,它仍然具有页面的缓存状态。选项是,添加PhaseListener,但他们告诉我添加PhaseListener是一个额外的代码来维护。
问题是:
1.是元标记属性http-equiv值在所有浏览器的html中仍然支持cache-control?因为当我在w3school登记时,属性http-equiv没有值缓存控制,编译指示和过期。
2.如果我添加了phaseListener,那么在每个页面中添加元标记会有什么好处。
提前致谢
答案 0 :(得分:8)
<meta http-equiv>
标记仅在从非HTTP资源(例如本地磁盘文件系统(通过file://
URI))打开有问题的HTML文件时使用,而不是在HTML文件打开时使用问题是从真实的HTTP资源(通过http://
URI)打开的。相反,已使用通过HttpServletResponse#setHeader()
设置的真实HTTP响应标头。
因此,您的具体问题是由于<meta http-equiv>
标记被忽略而引起的。
答案 1 :(得分:1)
http-equiv
属性仅支持某些标头,并且在不同的浏览器中支持不同。例如,Mozilla only document support for:
意图是服务器解析此标头(meta http-equiv - is it sent as part of an HTTP header, or does the client parse the body for meta tags?),但这从未被广泛实现。它由Apache httpd的mod_proxy
:
启用ProxyHTMLMeta的另一个作用是解析所有
<meta http-equiv=...>
声明并将它们转换为真实的HTTP标头,以符合此{* 1}}元素的这种形式的原始目的。
Using <meta> tags to turn off caching in all browsers?建议可以在更多浏览器中使用的格式 但是,一般来说,这不是一种支持的技术。