html5 元标记缓存控制不再有效?

Posted

技术标签:

【中文标题】html5 元标记缓存控制不再有效?【英文标题】:html5 meta tag cache-control no longer valid? 【发布时间】:2011-10-03 14:52:52 【问题描述】:

如何定义

<meta http-equiv="cache-control" content="no-cache" />

html5 中?根据 W3C Validator 和 documentation,它不再有效。

【问题讨论】:

为什么不将其与 HTTP 标头一起发送? @Linus Kleen:我正在寻找纯 HTML 解决方案。 我来到这里正是因为我也在寻找一个纯 HTML5 解决方案。我的网站托管在 GitHub Pages 上,但它没有提供修改 HTTP 标头的方法。 @AndrésBotero - 我能问一下你为什么要在 GitHub 页面上使用 no-cache,因为它是为静态内容设计的吗? “一种修改标头的方法”一般来说,不一定只是无缓存,呵呵。我现在不记得我想修改哪个标题了。 【参考方案1】:

没有 HTML 解决方案,因为它不是标记问题。缓存是对资源的一种操作,而不是资源定义本身的一部分。

正如其他人所说,HTTP 标头是控制缓存的最佳方式,因为 所有 缓存都可以观察到这些 - &lt;meta&gt; 标签只被浏览器缓存观察到。这些应该由您的服务器/网络框架设置。

也就是说,如果浏览器仍然会为 HTML5 文档类型的页面观察 &lt;meta http-equiv="cache-control" content="no-cache"&gt;,我不会感到惊讶。

【讨论】:

【参考方案2】:

将缓存指令放入元标记不是一个好主意,因为虽然浏览器可以读取它们,但代理不会。因此,它们是无效的,您应该将缓存指令作为真正的 HTTP 标头发送。

【讨论】:

【参考方案3】:

在代码的开头你需要使用这个:

<!DOCTYPE html>
<html manifest="cache.manifest">

...

然后创建 cache.manifest 文件,其中包含您要缓存的内容,即

CACHE MANIFEST
# 2010-06-18:v2

# Explicitly cached 'master entries'.
CACHE:
/favicon.ico
index.html
stylesheet.css
images/logo.png
scripts/main.js

# Resources that require the user to be online.
NETWORK:
*

# static.html will be served if main.py is inaccessible
# offline.jpg will be served in place of all images in images/large/
# offline.html will be served in place of all other .html files
FALLBACK:
/main.py /static.html
images/large/ images/offline.jpg

清单可以包含三个不同的部分:CACHE、NETWORK 和 FALLBACK。

缓存: 这是条目的默认部分。在此标题下(或在 CACHE MANIFEST 之后)列出的文件将在首次下载后被显式缓存。

网络: 本节中列出的文件如果不在缓存中,则可能来自网络,否则即使用户在线,也不会使用网络。您可以在此处将特定 URL 列入白名单,或者简单地“”,它允许所有 URL。大多数网站都需要“”。

回退: 如果资源不可访问,则指定后备页面的可选部分。第一个 URI 是资源,第二个是网络请求失败或错误时使用的回退。两个 URI 必须来自与清单文件相同的来源。您可以捕获特定的 URL,也可以捕获 URL 前缀。 “images/large/”将捕获来自 URL 的失败,例如“images/large/whatever/img.jpg”。

【讨论】:

【参考方案4】:

没有 HTML 解决方案。 Mozilla 的应用程序缓存 (cache.manifest) 已弃用。应用程序缓存站点说:

此功能已从 Web 标准中删除。尽管某些浏览器可能仍然支持它,但它正在被删除。尽可能避免使用它并更新现有代码。 ... 请改用Service Workers

除此之外,我建议你使用HTTP Cache-Control来解决缓存问题。

【讨论】:

以上是关于html5 元标记缓存控制不再有效?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP的缓存控制

使用 lxml 有效地解析元标记?

facebook open-graph 和 twitter 卡的有效 xhtml 元标记

使用元标记设置缓存标头:始终在缓存控制响应中获取“私有”

HTML5 会支持离线缓存音频的访问吗?

Http缓存相关