【问题标题】:HTML5 Offline Manifest Stop Caching Page It Is Declared OnHTML5 Offline Manifest 停止缓存它被声明的页面
【发布时间】:2012-08-19 18:27:31
【问题描述】:

我一直在使用缓存清单文件并试图让它停止缓存它声明的页面。

来自HTML5 Rocks

用户导航到的任何包含清单的页面都将被隐式添加到应用程序缓存中

王牌。我希望清单文件缓存特定的工件,其中之一是我的在线单页应用 HTML 的离线版本,但不缓存在线版本。

【问题讨论】:

  • 我对 HTML5 还是有点陌生​​,但令我惊讶的是,没有明确定义的方法可以防止缓存包括清单在内的页面。
  • 是的,我也是。如果清单文件具有更大的影响力,我会更喜欢它,因此只有您声明的内容才会被缓存。它不应该链接到页面。这只是隐藏的功能。
  • 我的第一个想法是“将它添加到 NETWORK: 部分”,但经过一些测试后这不起作用(至少在 IE 中 - 我一发现一个案例就停止了测试不行)。在我看来,这完全是错误的——明确声明的东西应该总是覆盖默认行为。由于这样的问题,我仍然非常尝试使用离线的东西。

标签: html manifest offline cache-manifest html5-appcache


【解决方案1】:

这就是我解决问题的方法。我的清单文件

CACHE MANIFEST
# Version 0.1

CACHE:
# Minimised Styles
/css/style.0.1.min.css

# Minimised JavaScript
/js/script.0.1.min.js

FALLBACK:
/ /offline.html

NETWORK:
*

请注意,离线时转到 mydomain.com/ 的所有内容现在都将转到 /offline.html(从缓存中)

现在,如何只缓存清单文件中的内容,而不包括 mydomain.com/ 上的在线页面。

将以下 iframe 放在 mydomain.com/

页面的底部
<iframe src="/offline.html" style="display: none;"></iframe>

并将manifest="myapp.appcache" 放入offline.html。

这意味着当 mydomain.com/ 被加载时,它永远不会被缓存(因为页面上没有清单属性)。然后浏览器通过 iframe 获取 offline.html 并使用清单文件中的说明添加您想要缓存的所有其他内容,包括由于存在 HTML 属性的 offline.html 页面。

我能看到的唯一开销是在第一页加载时,iframe 会发出一个额外的 HTTP 请求,但是一旦缓存它就会从缓存中取出它,所以不是什么大问题。

【讨论】:

  • 这似乎适用于 Chrome,但我似乎无法让它适用于 FireFox v14.0.1。它不断从网络获取主 index.htm 文件的所有内容(它没有清单属性 - 但确实有一个 iframe 和具有清单的 offline.htm 文件)。
  • 升级到 FF 15 后,它开始为我工作。不确定我的设置是否有问题,但现在可以了。
  • 这正是我想要的,虽然不整洁,但可以完美地完成工作。谢谢@Greg!
猜你喜欢
  • 2014-11-19
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多