2012-01-04 183 views
0

我遇到了一个我正在处理的Web应用程序的问题,并且我发布了一个问题here,这个问题有点含糊,可能不是很有帮助。我决定创建一个非常基本的网站,并将其构建为主应用程序,并查看它的中断位置。我已经做到了这一点,并立即与离线缓存卡住了。HTML5离线奇怪行为

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

我在3个HTML页面,并将它们添加到该文件夹​​ManifestTesting:

  • 的index.htm - 此页面包含2个链接page1.htm和page2.htm
  • page1.htm - 只包含一个头,说第1页
  • page2.htm - 只包含一个标头,所以现在如果我浏览到http://localhost/manifesttesting如果得到的索引页,并可以导航到2页说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的要求,允许网站保存离线数据,启用离线模式,然后尝试导航到第1页 - 它不起作用! FireFox告诉我它处于离线模式,无法浏览网页!

我在做什么错?

回答

1

可能有几种可能性在这里:

1)你可以尝试把在 “/pages/page1.htm”,而不是 “页/ page1.htm”

2)也确保所有的链接和你在浏览器上输入的内容都是区分大小写的。 ('pages/page1.htm'与'pages/Page1.htm'不一样)

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

4)这可能是最有可能的原因:当你更改了manifest文件,并刷新浏览器,这是发生了什么(假设你是在线)

  • 浏览器首次加载回所有在缓存
  • 那么浏览器在网上查询您的清单文件中的文件
  • 它检测到清单文件发生了变化,它就会继续下载新的文件
  • 然而,在这个时候,你仍然会看着你的'旧文件',因为使用浏览器已加载旧文件在上网前下载'新文件'
  • 如果在这一点上,如果你再次(第二次)刷新 ,你应该得到'新文件'(你会能够在离线后进入第1页和第2页

这是目前的标准行为。有些人把一些事件处理程序提示用户再次刷新(在第一次刷新之后)