【问题标题】:Using Cache-Manifest correctly正确使用缓存清单
【发布时间】:2013-12-29 10:39:48
【问题描述】:

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

我正在使用 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 告诉我,本地主机不可用,正如预期的那样。我现在把它变成离线模式。现在我可以访问索引页,但没有清单中列出的其他视图。

所有访问的页面都可以在离线模式下使用,但如果我正确理解了这个概念,清单的每个元素都应该在我访问第一个页面时加载到离线缓存中。

一些进一步的信息:

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

我是否将清单文件放在了错误的位置?正如您可能已经看到的那样,它位于“清单”文件夹中。

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    遗憾的是,缓存不像“完整网站下载器”那样工作,而只是指示浏览器在第一次访问后缓存页面:

    来自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),转而支持 Service Worker 离线缓存资源。这可能就是上面的链接失效的原因。

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

    【讨论】:

    • 好的,这对我有点帮助。但是为什么我需要提供清单中的代码呢?如果我只添加 manifest="..." 标签,它也可以工作。当我将页面添加到清单时,区别在哪里?
    • 在清单中,您列出了您想要缓存的资源(页面+js+css+img+whatever)。实际的缓存只会发生在指定的资源上,并且只有在它们在线访问过至少一次之后才会发生。
    • 好的,非常感谢,这让我更清楚了。我会尽快接受你的回答。
    • @TallMaris 你知道样式表是否接受带有通配符的路径吗?
    • @callisto 不,星号仅在网络部分可用。 FALLBACK 部分也有一些隐式语法。 CACHE 部分需要明确,每行一个文件。通常您希望使用资产管理器或其他自动系统来动态创建清单文件。 dev.w3.org/html5/pf-summary/offline.html#manifests
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2011-11-14
    • 2018-03-13
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多