我一直在玩缓存清单文件并尝试让它停止缓存它声明的页面。
用户导航到包含清单的任何页面都将隐式添加到应用程序缓存
王牌。我希望清单文件缓存特定的工件,其中一个是我的在线单页应用HTML的离线版本,但不是缓存在线版本。
答案 0 :(得分: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 / 时,它将不会被缓存(因为页面上没有清单属性)。然后浏览器通过iframe获取offline.html,并且使用清单文件中的说明添加您想要缓存的所有其他内容,包括由于HTML属性的存在而包含offline.html页面。
我能看到的唯一开销是第一页加载,iframe会发出额外的HTTP请求,但是一旦缓存它就会从缓存中获取,所以不是一个大问题。