HTML 5离线存储缓存清单不起作用

问题描述 投票:5回答:5

我正在尝试使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进行访问。

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

Content-Type    cache-manifest

还是应该返回'text / cache-manifest'?也许这是问题所在?

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

任何人都可以建议出什么问题了-因为我有些困惑?

html manifest offline-caching
5个回答
1
投票

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

第二,应按照text/cache-manifest定义哑剧类型。我与IIS并没有真正的关系,但是似乎有两种方法可以添加此MIME类型,即通过IIS administration UI或通过web.config文件

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


1
投票

您需要注意一些问题:

  1. Chrome(最后我猜想所有的浏览器)都只能通过安全请求处理缓存文件。如果您的请求不安全,则将不会执行缓存。
  2. 移动浏览器(至少,我可以测试的设备)不关心安全或不安全的请求。 但是我宁愿为政治变革做好准备。]
  3. 我不知所措,试图理解为什么在Android中我的文件可以正常运行,而在iOS中却失败了,原因是我以隐身模式运行浏览器
  4. 。隐身模式下的iOS无法缓存页面,您会收到错误消息。

    如果发现更多问题,我将其记录下来。

问候


0
投票

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.