HTML 5应用程序缓存在Safari/Opera/Chrome中有效,但在Firefox中无效。

11

我在一个网站上使用了html5的应用程序缓存,在Safari、Opera和Chrome上都可以正常工作,但在Firefox上无法正常工作。

以下是我的代码:

<!DOCTYPE HTML>
<html manifest="./manifest.appcache">
<head>

以及以下的manifest.appcache文件:

CACHE MANIFEST
/
/accessibility
/anchoring
/areas-of-application-in-business
/calibrating-rep-system-preferences
/circle-of-excellence
/collapse-anchors
/contrastive-analysis-and-mapping-across
/convincers
/creating-an-air-of-authority
/decision-making
/elicitation-of-submodalities
/embedded-commands
/embedded-commands-2
/eye-patterns
/four-types-of-feedback
/home
/how-to-remember-names
/introduction-to-anchoring
/introduction-to-nlp
/key-elements-of-the-meta-model
/language-and-communication-model
/language-patterns
/leadership
/modelling
/my-action-plan
/new-behaviour-generator
/nlp-presuppositions
/outcome-thinking
/pacing-and-leading
/perceptual-positions
/predicate-phrases
/predicates
/preference-test
/presupposition-cards
/presuppositions
/privacy
/rapport
/rapport-pacing-and-leading
/representational-systems
/sensory-acuity
/strategies
/structure-for-adjusting-feedback
/structure-of-nlp-techniques
/structure-vs-content
/submodalities
/submodalities-and-strategies
/submodalities-checklist
/terms-and-conditions
/the-6-deadly-words
/the-meta-mirror
/the-power-of-presuppositions
/the-problem-frame-and-the-outcome-frame
/user-profile
/well-formed-outcomes
/what-is-nlp
/userImages/nlp_language_comm.png
/css/mobile.css
/css/style.css


# Hash: a4e8f4f6a4dd45dd3e8acdaae8546a0a

我正在使用这里的代码:http://jonathanstark.com/blog/2009/09/27/debugging-html-5-offline-application-cache/ 来调试应用程序缓存并在网站上显示输出。

在 Firefox 中,调试代码的输出显示它正在下载所有文件并调用交换缓存。如果我随后断开与互联网的连接并点击链接到另一个页面,该页面应该已经下载,那么在 Firefox 中会显示“无法连接”消息,而在 Safari、Opera 和 Chrome 中则正常工作。

欢迎提供任何帮助和建议。

谢谢 Steve


听起来你的Firefox没有进入离线模式,它可能认为你仍然连接到互联网。点击Firefox按钮,在“Web开发人员”子菜单中检查“工作脱机”以查看是否是这个原因。 - Wladimir Palant
我刚刚尝试了一下,它显示了离线模式错误页面。 - Steve Jones
7个回答

11

检查服务器是否为生成的文件设置了no-cache/no-store头信息。与其他浏览器不同,如果是这样,Firefox将忽略manifest。


1
是的,这是正确的解决方案。我遇到了类似的问题,这帮助我解决了问题。 - Nitesh
1
我也发现这是在Google App Engine中的一种解决方法,它在Chrome中运行良好,但在Firefox中却不行(每次页面加载时updateready事件都会不断触发)。通过用空字符串覆盖默认的应用程序引擎Cache-Control头似乎已经停止了这种错误行为。 - notreadbyhumans

4
我可以帮您翻译成中文。这段内容是关于编程的,讲述了一个问题以及解决方法。其中提到了FireFox缓存文件更加积极,因此需要添加一些头部信息。对于清单文件(manifest),需要添加以下头部信息:
Pragma: no-cache
Cache-Control: no-cache
Expires: date

对于文件:

Last-Modified: date
Cache-Control: no-cache
Expires: date

date替换为RFC 1123格式的当前日期。


1

我遇到了类似的问题。

  1. 确保清单文件的类型为"text/cache-manifest"
  2. 不要在Firefox/IE的隐私浏览模式下尝试。它只在常规浏览模式下工作。但在Chrome中两种模式都可以工作
  3. 离线时,URL的简单更改可能会出现问题

    • http://localhost:8080/app 不适用于Firefox/IE
    • http://localhost:8080/app/ 适用于Firefox/IE

    两者在Chrome中都可以工作

  4. 使用这些便捷的资源查看器以获得更详细的视角
    • about:cache - Firefox
    • chrome://appcache-internals/ - Chrome

如果有人知道IE是什么,请填写。


1

检查是否设置了no-cache/no-store头部


0
在Firefox的首选项->高级->网络中,在“以下网站已存储离线数据:”列表中,您是否看到了您的网站?如果是这样,请尝试从列表中清除您的网站,然后重新加载您的网站。

它在列表中显示,所以我清除了它,但仍然没有起作用。感谢您的建议。 - Steve Jones
你能发布一个现场网站的链接吗?另外,cotangent.co(我的网站)在你的FF中是否有缓存?如果是这样,请查看源代码并将缓存代码复制到您的网站中。使用只有以下一行的.htaccess文件“AddType text/cache-manifest appcache manifest”(显然不带引号)。如果可以,请逐个将项目添加回清单文件中,直到出现问题为止。 - Earl Zedd
嗨,metahack。我看了你的网站,它运行得很好。我唯一能想到的是我的网站(steve-j.co.uk)没有实际的 .html 页面。它是使用 CMS 动态生成的。也许这会在 FF 中引起问题,但奇怪的是它仍然可以在其他浏览器上工作。 - Steve Jones
看起来steve-j.co.uk包含一些幻灯片图片链接,这些链接不在清单中--也许Firefox JavaScript正在尝试运行幻灯片并挂起页面。尝试暂时删除幻灯片或查看主页源代码,并确保您看到的每个链接都在清单中。你使用的是什么CMS? - Earl Zedd

-1

我也遇到了同样的问题;这个头对我来说是固定的。

内容类型:text/cache-manifest


-1

结合关闭FireBug,Earl上面的回答对我有用。

在Firefox首选项 -> 高级 -> 网络中,在“以下网站已存储离线使用数据:”列表中,您是否看到您的网站?如果是,请尝试从列表中清除您的网站,然后重新加载您的网站。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接