浏览器在加载网站时是否缓存缓存清单文件中列出的所有页面,或者您是否必须访问每个页面才能缓存(以后再脱机访问)?
我阅读了关于它的MDN文章和这篇文章,这就是我带走的东西
"any page the user navigates to that include a manifest will be implicitly added to the application cache"
从上面看,您似乎必须访问每个页面才能进行缓存。但我不确定这是否是他们试图传达的内容。
有没有人知道或有这方面的经验?
答案 0 :(得分:0)
简而言之:加载网站时会缓存缓存清单中列出的所有页面。
为了清楚说明,让我们分析你提到的句子。它说:
用户导航到包含清单的任何页面都将隐式添加到应用程序缓存
首先,“包含清单的页面”是html标记上具有清单属性的每个页面:
<html manifest="example.appcache">
...
</html>
此类页面将“隐式添加到应用程序缓存”。关键字是“隐式”。这意味着,即使该页面未在清单文件中列出,此页面也会添加到应用程序缓存。
加载页面后,此页面上引用的清单文件中的所有页面/资源都将被缓存(无需访问它们)。
此外,清单中未列出但包含清单属性的每个页面都会被缓存,但只有当您访问该页面时才会出现。
如果我的解释不清楚,我可以提供一个简短的例子。
答案 1 :(得分:0)
应用程序缓存包含缓存清单中指定的所有资源。这就是重点。用户不需要“访问”它们。 (正常访问通常会将它们添加到浏览器缓存中,但这是一个完全不同的问题。)应用程序缓存适用于应用程序,而不是网站。当且仅当缓存清单已更改时,才会重新加载应用程序缓存。这对于网站来说是荒谬的,但它对应用程序很有意义。
您引用的MDN页面,没有引用,似乎只是说当访问具有应用程序缓存清单的页面时,页面本身会添加到应用程序缓存中,即使它没有在maniest中明确提到