3

我正在为客户开发一个 HTML 应用程序。整个应用程序前端由 1 个 HTML 文件、1 个 Javascript 文件、1 个 CSS 文件(加上 jquery)和一些图像完成。服务器上有一些 php 脚本,它们使用 AJAX 调用,但前提是 Internet 连接可用。如果没有可用的连接,则站点将使用本地缓存的数据(使用localStorage)。

为了使站点可以离线使用,我在我的 HTML 中声明了缓存清单。我的 HTML 如下所示:

<!DOCTYPE html>
<html manifest="cache.manifest.php" language="en">
...
</html>

cache.manifest.php输出如下所示:

CACHE MANIFEST
#VersionHash: 80b9345e6c39efbbe8431e394b014b4f

CACHE:
/css/ebot.css
/favicon.ico
/images/appicon.png
/images/list-arrow.png
/images/list-checkmark.png
/images/woman.png
/index.html
/js/jquery-1.8.3.min.js
/js/ebot.ls.js

NETWORK:
/emaillog.php
/getdata.php
/uploadlog.php

到目前为止,一切都很好。现在,我从具有 Internet 连接的浏览器访问该站点。我收到一个小通知,询问是否允许该站点存储信息以供离线使用 - 我允许。当我检查设置时,我看到该站点存储了 316K 的数据 - 大约是正确的。

现在我关闭互联网连接并尝试访问http://www.mysite.com/index.html- 并收到一条错误消息,显示“互联网连接不可用”(或类似程度的内容)并且页面未显示。这发生在我在我的开发机器(firefox、safari 和 chrome)以及客户端的 ipad 上测试的 3 个浏览器中(该应用程序最终在 ipad 上使用)。

我在这里想念什么?我究竟做错了什么?

4

1 回答 1

1

这可能有很多原因。看看这篇文章:

我猜您没有为清单指定正确的内容类型 (MIME)。它应该是“文本/缓存清单”。在 Chrome 的控制台中检查事件。当 appcache 清单正确时,您应该会看到如下内容:

使用清单创建应用程序缓存http://example.com/manifest.appcache
应用程序缓存检查事件
应用程序缓存下载事件
应用程序缓存进度事件 (YYY of XXX)
应用程序缓存缓存事件

我建议从最简单的清单开始,以确保解析清单。尝试:

CACHE MANIFEST
NETWORK:
*

这样的清单应该只缓存您的起始 html 页面。

于 2013-01-24T17:30:17.103 回答