0

浏览器是否会在加载网站时缓存缓存清单文件中列出的所有页面,或者您是否必须访问每个页面才能对其进行缓存(然后离线访问)?

我阅读了关于它的 MDN 文章和这篇文章,这就是我带走的

"any page the user navigates to that include a manifest will be implicitly added to the application cache"

从上面来看,您似乎必须访问每个页面才能对其进行缓存。但我不确定这是否是他们想要传达的。

有谁知道或有这方面的经验?

4

2 回答 2

0

简而言之:缓存清单中列出的所有页面在加载网站时都会被缓存。


为了清楚起见,让我们分析一下您提到的句子。它说:

用户导航到的任何包含清单的页面都将被隐式添加到应用程序缓存中

首先,“包含清单的页面”是在 html 标记上具有 manifest 属性的每个页面:

<html manifest="example.appcache">
    ...
</html>

这样的页面将“隐式添加到应用程序缓存中”。关键字是“隐式”。这意味着,即使清单文件中没有列出此页面,它也会被添加到应用程序缓存中。

加载页面后,此页面上引用的清单文件中的所有页面/资源都将被缓存(无需访问它们)。

此外,清单中未列出但包含清单属性的每个页面都会被缓存,但只有当您访问该页面时才会发生这种情况。

如果我的解释不清楚,我可以提供一个简短的例子。

于 2013-10-17T19:23:32.450 回答
0

应用程序缓存包含缓存清单中指定的所有资源。这就是重点。用户不需要“访问”它们。(正常访问通常会将它们添加到浏览器缓存中,但这是一个完全不同的问题。)应用程序缓存适用于应用程序,而不是网站。当且仅当缓存清单已更改时,才会重新加载应用程序缓存。这对网站来说是荒谬的,但对应用程序来说却很有意义。

您引用的 MDN 页面(没有引用)似乎只是说,当访问具有应用程序缓存清单的页面时,即使在最常见的内容中未明确提及该页面本身,也会将其添加到应用程序缓存中。

于 2013-10-17T19:26:29.967 回答