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

时间:2011-07-12 13:00:51

标签: html5 meta-tags

如何定义

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

?根据W3C验证器和documentation

,它不再有效

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

在代码的开头,你需要使用它:

<!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之后)将在首次下载后显式缓存。

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

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

答案 2 :(得分:5)

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

  

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

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

答案 3 :(得分:1)

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

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

也就是说,如果浏览器仍然看到<meta http-equiv="cache-control" content="no-cache">的HTML5 doctype页面,我不会感到惊讶。