正确使用Cache-Manifest

时间:2013-12-11 12:42:39

标签: asp.net-mvc html5 firefox cache-manifest

我遇到以下问题:即使我有缓存清单,也无法正确使用我的网站。

我正在使用 Visio 2012 ,asp.net MVC。

这是我到目前为止所做的:

我创建了我的Manifest.manifest文件,它包含以下代码行:

CACHE MANIFEST

../Content/images/icons-18-white.png
../LegalEntity/IndexLegalEntity.cshtml
../Home/Index.cshtml 

在每个视图中我添加了

<!DOCTYPE html>
<html manifest="~/Manifest/Manifest.manifest">

现在我访问我的浏览器(Firefox),并询问我是否允许我的浏览器存储数据以供离线使用。我同意。 现在我关闭了IIS Express,因此无法访问该网站。

当我刷新页面时,Firefox告诉我,localhost不可用,正如预期的那样。我现在把它变成离线模式。现在我可以访问我在清单中列出的其他视图的索引页面,但

所有访问过的网页是在离线模式下可用,但如果我理解正确的概念,清单中的每个元素应该被装入脱机缓存,当我访问第一个页面。

进一步的信息:

我清空了我的浏览器缓存(多次)。 我刷新了我的.manifest文件。 我删除了Mozilla / Firefox / ...文件夹中的offline-cache。

我是否将清单文件放在错误的位置?你可能已经看到它位于“Manifest” - 文件夹中。

Location of the .manifest

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

可悲的是,缓存不像“完整网站下载器”那样工作,但仅指示浏览器在首次访问后缓存页面:

来自 http://www.w3schools.com/html/html5_app_cache.asp [更新如下],重要的位用粗体显示:

  

清单文件有三个部分:

     

CACHE MANIFEST - 此标题下列出的文件将在之后缓存   它们是第一次下载

     

NETWORK - 下面列出的文件   此标头需要连接到服务器,永远不会   

     

FALLBACK - 此标题下列出的文件指定了回退   页面无法访问时的页面

所以是的,您需要至少浏览一次所有页面以便能够缓存它们......这就是为什么这可能是一种更适合单页应用程序的技术,以支持离线使用而不是完整的网站离线可用性。

<强>更新

请注意,W3C网站上的文档继续使用一个非常令人困惑的例子:

  

第一行是CACHE MANIFEST,是必需的:

     

CACHE MANIFEST

     

/theme.css

     

/logo.gif

     

/main.js

     

上面的清单文件列出   三种资源:CSS文件,GIF图像和JavaScript文件。什么时候   清单文件已加载,浏览器将下载这三个文件   从网站的根目录。然后,每当用户是   没有连接到互联网,资源仍然可用。

粗体部分并不完全正确。如果在您正在访问的页面中请求它们,则浏览器将下载文件 (我还假设它们是使用ajax加载的)并保持缓存。

<强>更新

正在弃用应用程序缓存(来自生活标准:https://html.spec.whatwg.org/multipage/browsers.html#offline),以支持服务工作者进行资源的离线缓存。这可能就是为什么上面的链接不再起作用了。

可以在Mozilla开发者网络页面上找到更多信息: https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache