我一直在尝试使用缓存清单文件,并尝试阻止其缓存声明页面。根据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/的内容现在将被发送到/offline.html(来自缓存)
现在,如何仅缓存清单文件中的内容,而不包括mydomain.com/上的在线页面。
请在mydomain.com/页面底部放置以下iframe:
<iframe src="/offline.html" style="display: none;"></iframe>
并且在offline.html中加入manifest="myapp.appcache"
。
这意味着当加载mydomain.com/时,它不会被缓存(因为页面上没有manifest属性)。然后浏览器通过iframe获取offline.html,并使用清单文件中的指令添加所有其他希望缓存的内容,包括offline.html页面,因为存在HTML属性。
我唯一能看到的开销是在第一次页面加载时,iframe将发出额外的HTTP请求,但一旦它被缓存,就会从缓存中取出,所以不是一个很大的问题。