HTML5 AppCache和普通浏览器缓存有什么区别?

时间:2012-10-09 17:57:08

标签: html5 html5-appcache

我不明白HTML5 AppCache的意义。我们已经有了正常的缓存。如果您第一次访问网站时它已经缓存了所有资产。 AppCache提供了什么额外的价值?它只是一个文件列表,以便浏览器知道要下载哪些资产,即使它们现在没有被HTML引用?浏览器是否确保缓存是“全有或全无”,即是否确保清单引用的所有内容都被缓存,或者什么都没有?

3 个答案:

答案 0 :(得分:7)

我认为您遗漏的一点是,AppCache专门设计为允许网络应用(和网站)脱机使用,尽管普通浏览器缓存提供的速度相同,用户在线,也由AppCache提供。

与浏览器缓存的主要区别在于,您可以指定浏览器应在清单文件中缓存的所有资产(可以想象您的整个网站),而浏览器缓存只会存储您实际访问过的网页(以及相关资产) 。

我不是AppCache的专家,但我知道它并非没有问题。有一篇非常好的文章here来自一个小伙伴,他使用AppCache来允许他的部分移动网站离线使用。它包括一些关于他们决定使用它的理由以及他们在这样做时遇到的一些问题。

关于这个主题的HTML5 Rocks article也有一些很好的信息。

答案 1 :(得分:5)

AppCache实际上使用浏览器缓存来支持其操作。浏览器等同于下载应用程序以在本地运行。

用户第一次访问该页面时,该页面的资源将从服务器加载并存储在普通缓存中。如果页面指定了appcache清单,浏览器将下载清单并获取其中的所有资源(即使它们没有出现在嵌入清单的页面上)。然后将它们存储在appcache中。

用户第二次访问该页面时,浏览器将检查其appcache。如果该URL存在条目,它将根据清单中指定的规则从appcache而不是从服务器加载页面(清单可以将某些资源明确标记为从网络获取)。

浏览器从appcache加载页面后,它将联系服务器以查看是否有更新的清单。如果清单已更新,它将从清单中获取资源。这些提取是使用普通的浏览器缓存规则完成的,因此其中一些资源实际上可能最终从常规浏览器缓存而不是从服务器获取(这允许您在使用appcache开发脱机应用程序时执行差异更新)。新版本的appcache与旧版本保持独立。获取新版本后,用户将继续与旧版本的资源进行交互,直到刷新主页面,然后加载新版本并丢弃旧版本。

另一个重要的一点是,appcache对资源何时被丢弃有不同的规则。 Appcache基本上从不丢弃最新的资源集,并将它们作为一个整体进行缓存。为了防止滥用,它强制实施网站缓存的存储限制(有时只有5 MB)。相比之下,浏览器缓存没有每站点限制,但如果达到全局缓存限制,将丢弃站点中的各个资源。

答案 2 :(得分:0)

HTML 5应用程序缓存的重要特性是它使Web应用程序离线可用。普通浏览器缓存没有给出。

除了这个应用程序缓存将提供

速度 - 由于指定页面的全部内容将缓存到浏览器,因此它将提供比浏览器缓存更快的速度

减少服务器负载 - 不需要一直回发帖子,因为所有内容都在缓存中,直到清单文件中有任何更改

缓存清单: - 缓存清单文件是HTML5应用程序缓存的核心。我们可以指定哪些页面不需要缓存,哪些不应该缓存,甚至我们可以将其重用为错误处理技术,因为我们可以在中指定自定义错误页面FALLBACK 部分显示用户是否请求了需要网络连接的内容

要了解有关应用程序缓存的基本知识,您可以See this tutorial