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 标头是控制缓存的最佳方式,因为 所有 缓存都可以观察到这些 - <meta>
标签只被浏览器缓存观察到。这些应该由您的服务器/网络框架设置。
也就是说,如果浏览器仍然会为 HTML5 文档类型的页面观察 <meta http-equiv="cache-control" content="no-cache">
,我不会感到惊讶。
【讨论】:
【参考方案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 元标记缓存控制不再有效?的主要内容,如果未能解决你的问题,请参考以下文章