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

Hon*_*gli 12 html5 html5-appcache

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

net*_*eet 7

我认为您缺少的AppCache是专门设计为允许Web应用程序(和网站)脱机使用,尽管普通浏览器缓存提供的相同速度优势(当用户在线时)也由AppCache.

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

我不是这方面的专家AppCache,但我知道它并非没有问题.有一个很好的文章在这里从谁使用一个小伙子AppCache,让他的移动网站的部分可脱机使用.它包括一些关于他们决定使用它的理由以及他们在这样做时遇到的一些问题.

HTML5岩石文章关于这个问题也有一些好的信息.


Joe*_*hts 5

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

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

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

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

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