HTML5,AppCache如何工作



所以我得到了我的IP侦听的文件服务器。

我创建了一个test.html,test.js和一个subtest.appcache。我的AppCache说:

CACHE MANIFEST
CACHE:
test.html
test.js
NETWORK :
*

同时,我的test.html:

<html manifest="manifest.appcache">

如果我在test.html上访问,则一切都在起作用,但是,如果我想更改html文件中的某些内容并重新加载页面,则没有更改(旧的HTML文件被缓存)。

如果我在AppCache文件上更改某些内容,例如,只需编辑变量后面的空间并重新加载我的页面,它就会接受HTML文件中的所有更改,并且不再忽略更改。

为什么?每次重新加载页面时,我如何才能收听我的HTML文件?

这就是缓存的工作方式。如果您想刷新缓存,则您已经说过需要更改清单文件。

您必须修改清单文件本身以告知浏览器以刷新缓存的文件。

但是您可以使用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标准中删除。尽管有些浏览器仍可能支持它,但它正在被删除。避免使用它,并在可能的情况下更新现有代码;请参阅此页面底部的兼容性表以指导您的决定。请注意,此功能可能随时停止工作。

我该怎么办?

您应该使用新的服务工作者API,它是应用程序缓存的直接替换。服务工作人员拥有应用程序缓存的所有功能。

用于服务工作者API检查以下:

  • mdn
  • Google Dev
  • W3C(github)

最新更新