HTML5的meta标签cache-control不再有效吗?

39
如何定义HTML元素?
<meta http-equiv="cache-control" content="no-cache" />

在HTML5中,根据W3C验证器和文档,它不再有效。


为什么不使用HTTP头发送它? - Linus Kleen
1
@Linus Kleen:我正在寻找一个纯HTML的解决方案。 - powtac
13
我之所以来到这里,正是因为我也在寻找一种纯HTML5解决方案。我的网站托管在GitHub Pages上,该平台不提供修改HTTP头的方式。 - Andrés Botero
3
@AndrésBotero - 你想在GitHub Pages上使用“no-cache”,可以问一下原因吗?毕竟它是为静态内容设计的。 - Stu Cox
一种修改标头的方法,通常不仅限于no-cache,呵呵。我现在不记得我想要修改哪个标头了。 - Andrés Botero
4个回答

12

将缓存指令放入元标签中并不是一个好主意,因为尽管浏览器可能会读取它们,但代理服务器不会。因此,它们是无效的,您应该将缓存指令作为真正的HTTP头发送。


8
在编写代码的开头,您需要使用以下内容:
<!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: 这是条目的默认部分。在这个标头下列出的文件(或紧接在CACHE MANIFEST后面)将在第一次下载后被明确地缓存。

NETWORK: 在该部分列出的文件可以从网络中获取,如果它们不在缓存中,则不使用网络,即使用户在线。您可以在此处将特定的URL列入白名单,或仅使用“”,允许所有URL。大多数网站都需要 ""。

FALLBACK: 可选部分,用于指定当资源无法访问时的备用页面。第一个URI是资源,第二个是在网络请求失败或错误时使用的备用。两个URI必须与清单文件来自相同的源。您可以捕获特定的URL,也可以捕获URL前缀。"images/large/"将捕获来自诸如"images/large/whatever/img.jpg"之类的URL的故障。


似乎开始的代码对我起作用了,而没有实际创建cache.manifest文件...但是在这里被提到已经过时了...https://en.wikipedia.org/wiki/Cache_manifest_in_HTML5 - Kai Carver

7
没有HTML解决方案。Mozilla的应用程序缓存(cache.manifest)已被弃用。应用程序缓存网站上说:
“此功能已从Web标准中删除。虽然某些浏览器仍可能支持它,但正在逐步删除。如果可能,请避免使用它并更新现有代码。...请改用Service Workers。”
除此之外,我建议您使用HTTP Cache-Control来解决缓存问题。

1

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

正如其他人所说,HTTP 标头是控制缓存的最佳方法,因为所有缓存都会观察这些标头,而 <meta> 标签只能被浏览器缓存观察到。这些应该由您的服务器/ Web 框架设置。

话虽如此,如果页面使用 HTML5 doctype,我不会感到惊讶,浏览器仍然会观察 <meta http-equiv="cache-control" content="no-cache">


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接