7

我试图让 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 的所有文件中。我认为这是有效的,因为当我在http://www.mydomain.com/online/cache.manifest的 Firefox 中查看文件时, Firebug 告诉我内容类型是:

Content-Type    cache-manifest

还是应该返回“文本/缓存清单”?也许这就是问题所在?

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

谁能建议可能出了什么问题 - 因为我有点难过?

4

5 回答 5

1

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

其次,mime 类型应该按照你说的定义text/cache-manifest。我与 IIS 并没有真正的关系,但似乎有两种方法可以添加这种 MIME 类型,通过IIS 管理 UI或通过web.config文件

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

于 2012-01-12T17:33:03.580 回答
1

有一些问题你需要注意:

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

如果我发现更多问题,我会写下来。

问候。

于 2018-03-16T21:06:05.643 回答
1

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

我在 Safari 中对其进行了测试,并且运行良好。问题是 Chrome 浏览器。我还按照另一个用户的建议尝试了 https,但也没有解决问题。因此,chrome 中可能有一个扩展名禁止它使用缓存文件。在解决您的问题之前,首先在标准浏览器 Safari、FireFox、IE、Opera 中对其进行测试。不要在 Brave 等非标准浏览器中测试,它在其中不起作用。

官方来自谷歌

这证实了 Ver 61 及更高版本中的弃用。我跑80了。

Chrome 支持应用程序缓存和离线 html5 应用程序清单。

应用程序缓存/离线应用程序/清单缓存。

意识到 applicationcache 已被弃用,但在我们拥有的遗留系统中,尚未批准的替换(服务工作者)尚未替换。

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

在通过浏览器查看时,这似乎在 Chrome 61 和更新版本中很常见,但它似乎只是最近才出现。

铬问题?还是 Chrome 和底层操作系统的组合?从 61 年起,我们的 android/windows 都出现了同样的问题。

注意:不推荐使用 HTML5 缓存

所有浏览器都将放弃此功能,我注意到它们不适用于任何最新的浏览器。这个MDN Mozilla强烈建议不要使用它。

于 2020-03-08T21:54:13.390 回答
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 of 2) www.mustrank.com/css/main.css 1.php:1

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

应用程序缓存缓存事件]

于 2014-04-21T03:31:20.263 回答
0

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

AddType text/cache-manifest .manifest

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>
于 2011-10-04T10:27:30.330 回答