更新应用缓存

时间:2014-06-25 08:39:24

标签: javascript jquery html

我想让我的网站脱机工作,我做到了。但问题是我无法更新我的清单文件。我有一个应检查更新的功能,如果可能的话更新它,但我不知道它为什么不起作用。

这是我的index.html

<html manifest="VideoPlayer.appcache" >
<head>
    <title>Video Player</title>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <link rel="stylesheet" type="text/css" href="style.css" />

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

</head>
<body id='main'>

    ...

    <script>

        window.addEventListener('load', function(e) {
            window.applicationCache.addEventListener('updateready', function(e) {
                if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
                    window.applicationCache.swapCache();
                    if (confirm('A new version of this site is available. Load it?')) {
                        window.location.reload();
                    }
                } else {}
            }, false);
        }, false);

    ....

    </script>
</body>
</html>

我的VideoPlayer.appcache:

CACHE MANIFEST

index.html
style.css
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

你能告诉我它有什么问题吗?

1 个答案:

答案 0 :(得分:0)

我不知道你的Javascript是否可以让它变得更容易(我当然希望如此!),但我从appcached文件的实验中学到的是,它们只能在Chrome和Firefox中成功更新/刷新/重新加载在以下条件下:

  • 您的案例VideoPlayer.appcache文件本身也必须更新。您可以通过在文件中包含日期和时间并将其更改为更新网页的日期和时间来实现。请参阅以下代码块,了解如何包含日期和时间。
  • Chrome正常但总浏览器缓存也必须清除;只是做一个“重新加载”#39;用Ctrl + F5不会做。请参阅此处如何清除它:http://www.guidingtech.com/1662/clearing-cache-in-google-chrome/
  • 在Firefox中,即使与Ctrl + F5结合使用也是如此。必须清除Firefox的脱机缓存Tools -> Options -> Advanced -> Network -> Offline Web Content and User Data -> Remove [site]

以下是appcache文件的日期和时间方法:

CACHE MANIFEST
# 2014-06-25 — 15.50

CACHE:
[your to-appcache files here]

更改日期和/或时间将告诉浏览器to-appcache文件已更新并应重新加载。

我没有在IE中测试过问题,因为我没有IE10,IE9也没有做appc。

如果您愿意,请告诉我它是如何工作的,特别是与您的Javascript结合使用。