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

pow*_*tac 27 html5 meta-tags

我该如何定义

<meta http-equiv="cache-control" content="no-cache" />
Run Code Online (Sandbox Code Playgroud)

在HTML5?根据W3C Validator和文档,它不再有效.

wan*_*kaf 8

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


小智 6

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

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

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


mah*_*n3d 5

在代码的开头,您需要使用以下代码:

<!DOCTYPE html>
<html manifest="cache.manifest">
Run Code Online (Sandbox Code Playgroud)

...

然后创建具有要缓存内容的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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


Stu*_*Cox 1

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

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

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