【问题标题】:html5 meta tag cache-control no longer valid?html5 元标记缓存控制不再有效?
【发布时间】: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,因为它是为静态内容设计的吗?
  • “一种修改标头的方法”一般来说,不一定只是无缓存,呵呵。我现在不记得我想修改哪个标题了。

标签: html meta-tags


【解决方案1】:

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

正如其他人所说,HTTP 标头是控制缓存的最佳方式,因为 所有 缓存都可以观察到这些 - &lt;meta&gt; 标签只被浏览器缓存观察到。这些应该由您的服务器/网络框架设置。

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

【讨论】:

    【解决方案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来解决缓存问题。

        【讨论】:

          猜你喜欢
          • 2016-05-23
          • 1970-01-01
          • 2014-03-09
          • 2010-12-27
          • 1970-01-01
          • 1970-01-01
          • 2020-07-17
          • 2011-06-29
          相关资源
          最近更新 更多