应用程序缓存清单在Firefox中未加载,在Chrome和Safari中正常

Application cache manifest not loading in Firefox, ok in Chrome and Safari

本文关键字:Chrome Safari 缓存 Firefox 应用程序 加载      更新时间:2023-09-26

我有以下清单

CACHE MANIFEST
# cache-revision-29541
# cache-creation-date: Fri Dec  5 11:33:29 GMT 2014
CACHE:
app.html
NETWORK:
*

还有下面的应用程序.html

<!DOCTYPE html>
<html manifest="app.manifest">
<head>
    <title>cache test</title>
    <script>
    function checkCache() {
        var appCache = window.applicationCache;
        var logACEvent = function(e) {
            console.log("Cache Event " + e.type + " Status: " + appCache.status);
        }
        appCache.addEventListener('error', logACEvent, false);
        appCache.addEventListener('checking', logACEvent, false);
        appCache.addEventListener('noupdate', logACEvent, false);
        appCache.addEventListener('downloading', logACEvent, false);
        appCache.addEventListener('progress', logACEvent, false);
        appCache.addEventListener('updateready', logACEvent, false);
        appCache.addEventListener('cached', logACEvent, false);
    }
    checkCache();
    </script>
</head>
<body>
</body>
</html>

和我的.htaccess条目(用于设置内容类型(

AddType text/cache-manifest .manifest
ExpiresByType text/cache-manifest "access plus 0 seconds"

我已经验证服务器正在设置内容类型。

在 Safari 中,这会输出两条控制台消息

Cache Event checking Status: 2
Cache Event noupdate Status: 1

在 Chrome 中,此输出

Cache Event checking Status: 2
Cache Event noupdate Status: 1

在火狐中我得到

Cache Event checking Status: 0
Cache Event error Status: 0

在IE11中,我得到

(i) Resource doesn’t exist on the server: 'http://10.119.103.2/~adf/RMC2/release/beta/app.html'.
(i) AppCache Fatal Error
Cache Event error Status: 0

应用程序 URL 为"http://{主机}/~adf/RMC2/release/beta/app.html"app.manifest 和 app.html 位于同一文件夹中。

没有指示错误可能是什么。我可以直接加载IE抱怨的URL(它与用于加载应用程序的URL相同(。

关于:Firefox中的缓存甚至没有列出此应用程序。

CACHE MANIFEST
app.html

即使使用上述简单清单,IE11 和 Firefox 也会报告错误,IE 在控制台中报告清单解析失败错误。

HTML1300: Navigation occurred.
File: app.html
Creating AppCache with manifest: 'http://10.119.103.2/~adf/RMC2/release/beta/app.manifest'.
Cache Event checking Status: 0
Manifest parsing failure: 'http://10.119.103.2/~adf/RMC2/release/beta/app.manifest'.
AppCache Fatal Error
Cache Event error Status: 0

我做错了什么?

更新:

如果我在 ~adf/RMC2/... 中安装 app.manifest 和 app.html...它适用于所有浏览器,当它安装在子文件夹发布/测试版中时,它在 Firefox 和 IE 中不起作用。

为什么?

我最终在Firefox内置appcache验证工具的帮助下解决了这个问题。

Shift+F2
appcache validate

这表示服务器正在为资源发送无存储标头,这与它们在应用程序缓存中冲突。

从服务器上的 .htaccess 中删除了有问题的条目,缓存开始工作。