HTML5脱机奇怪的行为

时间:2012-01-04 10:18:53

标签: html5 offline-caching offline-mode offline-browsing

我正在处理我正在处理的网络应用程序的问题,我发布了一个问题here,这有点模糊,可能不是很有帮助。我决定创建一个非常基本的网站,并将其构建为主应用程序,并查看它的中断位置。我已经完成了这项工作并立即陷入了离线缓存的困境。

这是IIS 7.5中本地托管的基本3页静态网站。我创建了文件夹c:\ inetpub \ wwwroot \ ManifestTesting,将其作为Web应用程序添加到IIS,并为.appcache扩展添加了新的MIME类型text / cache-manifest。我也使用FireFox 9.0进行测试,因为它具有离线模式功能。

我创建了3个html页面并将它们添加到ManifestTesting文件夹中:

  • index.htm - 此页面包含指向page1.htm和page2.htm
  • 的2个链接
  • page1.htm - 只包含第1页的标题
  • page2.htm - 只包含第2页的标题

所以现在如果我浏览到http://localhost/manifesttesting,如果获得索引页面并且可以导航到2页。

然后我创建了一个名为manifest.appcache的文件并将其添加到ManifestTesting文件夹中:

CACHE MANIFEST

CACHE:
index.htm
page1.htm
page2.htm

并在index.htm中添加了对清单文件的引用:

<html manifest="manifest.appcache">

因此,如果我清除所有历史记录并浏览到index.htm,FireFox会询问我是否允许网站存储数据以供离线使用。我点击允许,将浏览器切换到离线模式,然后尝试导航到page1.htm工作正常!所以到目前为止一切都很好。

现在对于我不理解的那一点。然后,我在ManifestTesting文件夹中创建了一个名为“pages”的新文件夹,并将page1和page2移入其中。我更新了索引中的链接以引用新位置,如果我浏览没有清单引用的网站,它就像以前一样正常工作。然后,我重新引用索引中的清单文件,并将清单更新为:

CACHE MANIFEST

CACHE:
index.htm
pages/page1.htm
pages/page2.htm

然后我清除历史记录,刷新,firefox要求允许网站存储离线数据,启用离线模式,然后尝试导航到page1 - 它不起作用! FireFox告诉我它处于离线模式,无法浏览网页!

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这里可能有一些可能性:

1)你能尝试输入“/pages/page1.htm”而不是“pages / page1.htm”

2)还要确保所有链接和您在浏览器上键入的内容都区分大小写。 ('pages / page1.htm'与'pages / Page1.htm'不同)

3)你提到你清除了历史...如果你这样做是为了测试,你需要清除物理文件缓存,而不仅仅是历史。

4)这可能是最可能的原因:当您对清单文件进行更改并刷新浏览器时,会发生这种情况(假设您在线)

  • 浏览器首先加载缓存中的所有文件
  • 然后浏览器在线检查您的清单文件
  • 它检测到清单文件已更改,然后将继续下载新文件
  • 但是,此时,您仍然会查看“旧文件”,因为浏览器在上网之前已加载旧文件以下载“新文件”
  • 如果此时,如果你点击刷新 再次(第二次),你应该得到'新文件'(你可以在离线后转到page1和page2

这是目前的标准行为。有些人放了一些事件处理程序来提示用户进行另一次刷新(第一次刷新后)