我遇到以下问题:即使我有缓存清单,也无法正确使用我的网站。
我正在使用 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” - 文件夹中。
感谢您的帮助!
答案 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