有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

不支持java is meta httpequiv值缓存控制?

我在页面上有以下代码:

<!-- 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等价值缓存控制??因为当我签入w3school时,属性http-equiv没有值缓存控件、pragma和expires。
2.如果我添加phaseListener,那么相对于在每个页面中添加元标记,有什么优势
先谢谢你


共 (2) 个答案

  1. # 1 楼答案

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

    因此,您的具体问题是由于这些<meta http-equiv>标记被忽略而引起的

    另请参见:

  2. # 2 楼答案

    只有一些头通过http-equiv属性受支持,并且在不同的浏览器中支持不同。例如,Mozilla only 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?),但这从未得到广泛实现。它由apachehttpd的^{}实现:

    The other effect of enabling ProxyHTMLMeta is to parse all <meta http-equiv=...> declarations and convert them to real HTTP headers, in keeping with the original purpose of this form of the HTML <meta> element.

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