HTML 5脱机存储缓存清单无法正常工作

时间:2011-10-04 10:21:27

标签: html5 manifest offline-caching

我正在努力让HTML5离线存储以基本方式运行。我阅读DiveIntoHTML5上的信息似乎有道理,但它似乎对我不起作用。我想知道是否有人可以帮我调试这个。

基本上我已经为应用程序index.htm设置了一个主页。所以我的申请是http://www.mydomain.com/online/index.htm在网上。用户将访问此页面,他们每天都可以在这里完成他们所有的工作。访问此URL将创建一堆缓存文件,以便他们可以访问http://www.mydomain.com/offline并查看应用程序脱机时的工作版本。

在线主页的前几行代码是:

<!DOCTYPE html>
<html manifest="cache.manifest">
<head>
   ...etc

我已经生成了一个名为“cache.txt”的纯文本文件,并在记事本中添加了以下内容:

CACHE MANIFEST
http://www.mydomain.com/offline/scripts/jquery-1.6.3.min.js
http://www.mydomain.com/offline/scripts/jquery-ui-1.8.16.custom.min.js
http://www.mydomain.com/offline/scripts/modernizr.min.js
http://www.mydomain.com/offline/scripts/json2.min.js
http://www.mydomain.com/offline/scripts/jquery.deserialize.js
http://www.mydomain.com/offline/scripts/jquery.cookie.js
http://www.mydomain.com/offline/scripts/main.js
http://www.mydomain.com/offline/css/main.css
http://www.mydomain.com/offline/css/structure-details.css
http://www.mydomain.com/offline/css/ui-lightness/jquery-ui-1.8.16.custom.css
http://www.mydomain.com/img/header.gif
http://www.mydomain.com/offline/img/bg.png
http://www.mydomain.com/offline/img/header_riser.gif
http://www.mydomain.com/offline/img/logo.png
http://www.mydomain.com/offline/img/offline.png
http://www.mydomain.com/offline/index.htm

然后我将此文件重命名为'cache.manifest'并将其上传到在线应用程序的根目录(与我的主页相同的级别),以便可以在http://www.mydomain.com/online/cache.manifest访问它。

托管公司据称已将“text / cache-manifest”的内容类型添加到IIS中扩展名为.manifest的所有文件中。我认为这是有效的,因为当我在Firefox http://www.mydomain.com/online/cache.manifest查看文件时,Firebug告诉我内容类型是:

Content-Type    cache-manifest

或者这应该返回'text / cache-manifest'?也许这就是问题?

当我查看系统上的离线存储文件夹时(C:\ Users \ Me \ AppData \ Local \ Mozilla \ Firefox \ Profiles \ b12u6xza.default)根本没有与此域相关的内容。

任何人都可以建议可能出现的问题 - 因为我有点难过吗?

5 个答案:

答案 0 :(得分:1)

首先,规范已经更改,您现在应该使用.appcache作为清单扩展名。

其次,mime类型应该像你说text/cache-manifest一样定义。我并不真正与IIS有关,但似乎有两种方法可以添加此MIME类型,可以通过IIS administration UI或通过web.config文件

此外,我建议您使用Google Chrome进行测试,因为它的控制台会显示所有清单解析数据和错误,包括未正确识别清单MIME类型的时间。

答案 1 :(得分:1)

我花了很多时间(针对我自己的问题),离线缓存无法正常工作。尽我所能做的一切,更改缓存文件名,通过htaccess添加处理程序,将文件从本地上传到实时服务器,仍然是同样的问题。终于我自己从这个问题中得到了一些帮助。

我在野生动物园中对其进行了测试,并且效果很好。 问题是Chrome浏览器。我还尝试了另一个用户建议的https,这也不能解决问题。因此,可能是chrome中有一个扩展名,禁止它使用缓存文件。解决问题之前,请先在标准浏览器Safari,FireFox,IE,Opera中对其进行测试。请勿在非标准的浏览器(例如Brave)中进行测试,否则将无法正常运行。

官方来自Google

确认deprecation in Ver 61 and onward。我正在80。

Chrome对应用程序缓存的支持,以及脱机html5应用程序的清单。

应用程序缓存/脱机应用程序/清单缓存。

意识到applicationcache已被弃用,但是 未批准的替换(服务人员)尚未替换 我们拥有的旧系统。

但是,最近的浏览器更新似乎已离线禁用 HTTPS网站上的功能。我们的清单文件现在被忽略,并且 而是显示了铬恐龙。

在浏览器中查看回来似乎在Chrome 61中很常见 和较新的版本,但它似乎只是在最近才出现。

Chrome问题?或Chrome和底层操作系统的组合?我们有 android / windows从61开始都显示相同的问题。

注意:已弃用HTML5缓存

所有浏览器都将放弃此功能,我注意到它们无法在任何最新的浏览器中使用。 MDN Mozilla强烈建议您不要使用它。

答案 2 :(得分:0)

尝试在httpd.conf中添加这些行。这可能会对你有帮助

AddType text/cache-manifest .manifest

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>

答案 3 :(得分:0)

你最好使用chrome的控制台进行测试!(你无法在chrome的网络中看到这些)

我的例子(访问:www.mustrank.com/views/1.php)。

查看下面的chrome控制台输出,首先创建清单文件“website.appcache”,然后下载“1.html”和“main.css”源

  

[使用清单创建应用程序缓存    www.mustrank.com/views/website.appcache 1.php:1

     

应用程序缓存检查事件1.php:1

     

应用程序缓存下载事件1.php:1

     

应用程序缓存进度事件(0 of 2)    www.mustrank.com/views/1.html 1.php:1

     

应用程序缓存进度事件(1/2)    www.mustrank.com/css/main.css 1.php:1

     

应用程序缓存进度事件(2 of 2)1.php:1

     

应用程序缓存缓存事件]

答案 4 :(得分:0)

您需要关注一些问题:

  1. Chrome(我猜最后所有浏览器)只通过安全请求处理缓存文件。如果您的请求不安全,则不会执行您的缓存。
  2. 移动浏览器(至少是我可以测试的设备)不关心安全或不安全的请求。 但我更愿意为政治变革做好准备
  3. 我试图理解为什么在Android中我的文件运行正常并且在i​​OS中它失败了,原因是我在隐身模式下运行我的浏览器。隐身模式下的iOS无法缓存页面,您会收到错误。
  4. 如果我发现更多问题,我会把它写下来。

    问候。