Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使HTML5应用程序离线可用_Html_Html5 Appcache_Cache Manifest - Fatal编程技术网

使HTML5应用程序离线可用

使HTML5应用程序离线可用,html,html5-appcache,cache-manifest,Html,Html5 Appcache,Cache Manifest,我正在为一个客户端开发一个HTML应用程序。整个应用程序前端由1个HTML文件、1个Javascript文件、1个CSS文件(加上jquery)和一些图像完成。服务器上有一些php脚本,它们是使用AJAX调用的,但只有在internet连接可用时才调用。如果没有可用的连接,则站点将使用本地缓存的数据(使用localStorage) 为了使站点脱机可用,我在HTML中声明缓存清单。我的HTML如下所示: <!DOCTYPE html> <html manifest="cache.

我正在为一个客户端开发一个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
#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
到目前为止还不错。现在,我可以通过浏览器访问该网站,并且可以连接互联网。我收到一个小通知,询问是否允许网站存储信息供脱机使用-我允许。当我签入设置时,我看到该站点存储了316K的数据——大约正确

现在我关闭internet连接并尝试访问
http://www.mysite.com/index.html
-并收到一条错误消息,提示“Internet连接不可用”(或达到该程度),页面将不显示。我在我的开发机器(firefox、safari和chrome)上测试的3种浏览器以及客户端的ipad(该应用程序最终将在ipad上使用)上都出现了这种情况


我错过了什么?我做错了什么?

可能有很多原因。 请看以下文章:

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

使用清单创建应用程序缓存
应用程序缓存检查事件
应用程序缓存下载事件
应用程序缓存进度事件(XXX的YYY)
应用程序缓存事件

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

CACHE MANIFEST
NETWORK:
*

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

不是答案,但您看过这篇文章吗?它讨论了使用appcache所涉及的许多问题。Manifest是由一个php程序创建的,它显式地设置了正确的内容类型。我同时登录了Chrome和Firefox(Firebug)。所以这肯定是另外一回事。你是怎么查到的?Chrome没有在其开发工具的网络选项卡中显示获取appcahce清单。您是否直接将浏览器指向cache.manifest.php?还要确保http缓存不会发生(在服务器中返回清单时添加适当的头)。首先,我直接加载cache.manifest.php进行了检查。第二,我确实得到了一个弹出条,上面说站点想要存储数据以供脱机使用,对此我回答“是”。这意味着浏览器确实理解缓存。你能在Chrome的开发工具的“资源”选项卡上看到你的缓存吗?这里有一个“应用程序缓存”部分。