14

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

来自HTML5 摇滚

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

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

4

1 回答 1

17

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

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

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

于 2012-08-24T07:46:59.780 回答