HTML5,appcache究竟是如何工作的?

时间:2017-11-23 10:17:12

标签: html html5 manifest

所以我有一个文件服务器可以监听我的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文件?

1 个答案:

答案 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,请检查以下内容: