我一直在玩缓存清单文件,并试图让它停止缓存它声明的页面。
来自HTML5 Rocks
用户导航到的任何包含清单的页面都将被隐式添加到应用程序缓存
王牌。我希望清单文件缓存特定的工件,其中一个是我的在线单页应用程序HTML的离线版本,但不缓存在线版本。
这就是我解决问题的方法。我的清单文件
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/的所有内容现在都将进入/online.html(从缓存)
现在,如何只缓存清单文件中的内容,而不包括mydomain.com/.上的在线页面
将以下iframe放在mydomain.com/页面底部
<iframe src="/offline.html" style="display: none;"></iframe>
并将manifest="myapp.appcache"
放入offline.html
这意味着当mydomain.com/被加载时,它将永远不会被缓存(因为页面上没有清单属性)。然后浏览器通过iframe获取offline.html,并且使用清单文件中的指令添加您想要缓存的所有其他内容,包括offline.html页面,因为存在html属性。
我能看到的唯一开销是在第一页加载时,iframe会发出一个额外的HTTP请求,但一旦缓存,它就会从缓存中取出,所以这不是一个大问题。