所以我有一个文件服务器可以监听我的IP。
我创建了一个test.html,test.js和一个manifest.appcache。 我的appcache说:
CACHE MANIFEST
CACHE:
test.html
test.js
NETWORK :
*
同时,我的test.html:
<html manifest="manifest.appcache">
如果我在test.html上访问,一切正常,但是如果我想在我的html文件中更改某些内容并重新加载页面,则没有任何改变(旧的html文件被缓存)。
如果我在appcache文件上更改某些内容,例如只需编辑变量后面的空格并重新加载我的页面,它就会接受来自我的html文件的所有更改,并且不再忽略这些更改。
为什么? 每次重新加载页面时,如何让它听我的html文件?
答案 0 :(得分:1)
这是缓存的工作方式。如果您想要刷新缓存,则需要更改清单文件。
您必须修改清单文件本身,以通知浏览器刷新缓存的文件。
但您可以使用JS来检查缓存是否已更改。
您可以像这样获取缓存对象:window.applicationCache
window.addEventListener('load', function(e) {
// Add an event listener to the cache
window.applicationCache
.addEventListener('updateready', function(e) {
// Check if ready to update (The update ready status is 4)
if (
window.applicationCache.status ==
window.applicationCache.UPDATEREADY) {
// Get new app chache
// window.location.reload();
window.applicationCache.swapCache()
}
}, false);
}, false);
查看官方文档:https://html.spec.whatwg.org/#applicationcache
请注意,此功能已弃用,您不应该使用
来自MDN:
此功能已从Web标准中删除。虽然有些浏览器可能仍然支持它,但它正在被删除。避免使用它并尽可能更新现有代码;请参阅本页底部的兼容性表,以指导您的决定。请注意,此功能可能随时停止工作。
您应该使用新的Service Worker API,它是Application缓存的直接替代品。服务工作者拥有App Cache的所有功能,甚至更多。
对于Service Worker API,请检查以下内容: