【发布时间】:2013-03-01 10:50:19
【问题描述】:
我正在使用应用程序缓存并遇到了 swapCache 函数的问题。
我创建了世界上最简单的缓存清单文件:
CACHE MANIFEST
# Timestamp: 2013-03-01 11:28:49
CACHE:
media/myImage.png
NETWORK:
*
第一次运行应用程序会在控制台中显示:
Creating Application Cache with manifest http://blah_blah/offline.appcache
Application Cache Checking event
Application Cache Downloading event
Application Cache Progress event (0 of 1) http://blah_blah/media/myImage.png
Application Cache Progress event (1 of 1)
Application Cache Cached event
到目前为止一切顺利。然后我换出图像并更改清单文件中的时间戳并得到以下内容:
Adding master entry to Application Cache with manifest http://blah_blah/offline.appcache
Application Cache Downloading event
Application Cache Progress event (0 of 2) http://blah_blah/media/myImage.png
Application Cache Progress event (1 of 2) http://blah_blah/Widget/?invoke=myWidgetFunctionName
Application Cache Progress event (2 of 2)
Application Cache UpdateReady event
此时调用 applicationCache.swapCache() 函数给我一个 DOM 异常 11 错误。
所有在网络服务器上正确配置的 MIME 类型。
任何人有任何想法/可以指出我正确的方向吗? (我已经在线阅读了所有常用链接的 appcache 内容,但看不出我做错了什么)
谢谢!
编辑:
正如我在下面的 cmets 中提到的,在我的 Web 服务器上设置 *.appcache 文件的过期标头立即过期似乎可以正常工作,尽管我仍然收到 DOM 异常错误(!?)。我发现以下博客条目可能会有所帮助: Possible Fix for Offline App Cache INVALIDSTATEERR
...但我不知道如何设置客户端的 MIME 类型。我的 google-Fu Skillz 抛弃了我。有人吗?
【问题讨论】:
-
我也偶尔/不一致地收到此错误并且找不到解决方案。如果你弄明白了,我很想听听。
-
我现在已经在我的 Web 服务器上设置了 *.appcache 文件的过期标头,使其立即过期,现在 appcache 似乎可以按预期工作。但是,我仍然在 swapCache 调用中收到 DOM 异常错误 11,所以我不确定它为什么会起作用!
-
您发布的链接只是建议您在 apache 配置中添加 MIME 类型(对我来说,在
/etc/mime.types中添加text/cache-manifest appcache)。我这样做并使用 curl 检查了交付的 mime 类型:Content-Type: text/cache-manifest。但是每当我打电话给appcache.update()或appcache.swapCache()时,我都会遇到同样的错误。我也很想听听有人弄清楚... -
你能给我们看一些代码吗?可能存在两次调用 swapCache 的错误,页面以某种方式自动应用更新等
-
@koko 你有没有让这个工作?你做了什么?
标签: javascript html browser-cache