【问题标题】:is meta http-equiv value cache control is not supported?是否不支持 meta http-equiv 值缓存控制?
【发布时间】:2013-07-23 09:18:53
【问题描述】:

我在页面上有此代码:

<!-- 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.所有浏览器的html中仍然支持元标记属性http-equiv值缓存控制吗?因为当我签入 w3school 时,属性 http-equiv 没有值 cache-control、pragma 和 expires。
2. 如果我添加 phaseListener 与在每个页面中添加元标记相比有什么优势。?
非常感谢

【问题讨论】:

    标签: java caching jsf-2 http-caching


    【解决方案1】:

    &lt;meta http-equiv&gt; 标记仅在从非 HTTP 资源(例如本地磁盘文件系统)打开相关 HTML 文件时使用(通过 file:// URI),而不是在打开相关 HTML 文件时使用来自真实的 HTTP 资源(通过 http:// URI)。而是使用通过HttpServletResponse#setHeader() 设置的真实HTTP 响应标头。

    所以,您的具体问题是因为那些&lt;meta http-equiv&gt; 标签被忽略

    另见:

    【讨论】:

      【解决方案2】:

      http-equiv属性只支持部分header,不同浏览器支持不同。比如Mozillaonly document support for

      • 内容语言
      • 内容安全策略
      • 内容类型
      • 默认样式
      • 刷新
      • 设置cookie

      目的是让服务器解析此标头 (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 的另一个效果是解析所有 &lt;meta http-equiv=...&gt; 声明并将它们转换为真正的 HTTP 标头,以符合这种 HTML &lt;meta&gt; 元素形式的原始目的。

      Using <meta> tags to turn off caching in all browsers? 建议的格式可能适用于更多浏览器 但一般来说,这不是受支持的技术。

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 1970-01-01
        • 2015-09-26
        • 2011-06-09
        • 1970-01-01
        • 2013-03-08
        • 2010-09-17
        相关资源
        最近更新 更多