我正在努力让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)根本没有与此域相关的内容。
任何人都可以建议可能出现的问题 - 因为我有点难过吗?
答案 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)中进行测试,否则将无法正常运行。
确认deprecation in Ver 61 and onward。我正在80。
Chrome对应用程序缓存的支持,以及脱机html5应用程序的清单。
应用程序缓存/脱机应用程序/清单缓存。
意识到applicationcache已被弃用,但是 未批准的替换(服务人员)尚未替换 我们拥有的旧系统。
但是,最近的浏览器更新似乎已离线禁用 HTTPS网站上的功能。我们的清单文件现在被忽略,并且 而是显示了铬恐龙。
在浏览器中查看回来似乎在Chrome 61中很常见 和较新的版本,但它似乎只是在最近才出现。
Chrome问题?或Chrome和底层操作系统的组合?我们有 android / windows从61开始都显示相同的问题。
所有浏览器都将放弃此功能,我注意到它们无法在任何最新的浏览器中使用。 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)
您需要关注一些问题:
如果我发现更多问题,我会把它写下来。
问候。