答案 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页面,我不会感到惊讶。