好的,我正在为需要具有离线功能的移动应用程序构建 PoC,并且我有几个关于我是否正确设计应用程序以及我将从缓存清单中获得什么行为的问题。
这个问题是关于在清单的 CACHE 部分和 NETWORK 部分中包含控制器操作的 URL。
我相信我已经在网上阅读了一些关于此的相互矛盾的信息。在一些站点中,我读到在 NETWORK 部分中包含通配符会使浏览器在服务器在线时尝试从服务器检索所有内容,如果没有互联网连接,则只使用缓存的任何内容。
然而,今天早上我在Dive into HTML5 上阅读了以下内容:让我们离线:
标记为 NETWORK: 的行是“在线白名单”部分的开始。本节中的资源从不缓存,并且不能离线使用。(尝试在离线时加载它们会导致错误。)
那么,哪些信息是正确的呢?如果我在 CACHE 和 NETWORK 部分都添加了控制器操作的 URL,应用程序将如何运行?
到目前为止,我有一个非常简单且小型的 PoC,这就是我在这个问题上观察到的:
我有一个控制器动作,它只生成 4 个随机数并将它们设置在 ViewBag 上,然后视图将在 UL 上显示它们。
我根本没有使用输出缓存。唯一的缓存来自清单文件。
在将 manifest 属性添加到我的 Layout.cshtml 的 html 标记之前,每次我请求 View 时,我都会得到不同的随机数,并且会命中控制器操作上设置的断点。
我在添加清单属性后第一次请求 URL/View 时,控制器上的断点被命中 3 次(而不是之前只有 1 次)。这已经很奇怪了,我将发布一个单独的问题,我只是在这里写下它以供参考。
在清单和资源被缓存后(通过查看 Chrome 开发工具上的控制台窗口进行验证),每次我请求查看/URL 时,我都会得到缓存的版本,并且断点再也不会命中。
这种行为让我相信 CACHE 部分中的任何内容都将覆盖或忽略 NETWORK 部分中的任何内容,但就像我说的(以及我在这里问的原因)是因为我是新手,我'不确定这是否是它应该工作的方式,或者我是否遗漏了某些东西或没有正确使用它。
任何帮助是极大的赞赏
这是 cache.manifest 的相关部分:
CACHE MANIFEST
#V1.0
CACHE:
/
/Content/Site.css
/Content/themes/base/jquery-ui.css
NETWORK:
*
/
FALLBACK: