Hon*_*gli 12 html5 html5-appcache
我不明白HTML5 AppCache的意义.我们已经有了正常的缓存.如果您第一次访问网站时它已经缓存了所有资产.AppCache提供了什么额外的价值?它只是一个文件列表,以便浏览器知道要下载哪些资产,即使它们现在没有被HTML引用?浏览器是否确保缓存是"全有或全无",即是否确保清单引用的所有内容都被缓存,或者什么都没有?
AppCache实际上使用浏览器缓存来支持其操作.浏览器相当于下载应用程序以在本地运行.
用户第一次访问该页面时,该页面的资源将从服务器加载并存储在普通缓存中.如果页面指定了appcache清单,浏览器将下载清单并获取其中的所有资源(即使它们没有出现在嵌入清单的页面上).然后将它们存储在appcache中.
用户第二次访问该页面时,浏览器将检查其appcache.如果该URL存在条目,它将根据清单中指定的规则从appcache而不是从服务器加载页面(清单可以将某些资源明确标记为从网络获取).
浏览器从appcache加载页面后,它将联系服务器以查看是否有更新的清单.如果清单已更新,它将从清单中获取资源.这些提取是使用普通的浏览器缓存规则完成的,因此其中一些资源实际上可能最终从常规浏览器缓存而不是从服务器获取(这允许您在使用appcache开发脱机应用程序时进行差异更新).新版本的appcache与旧版本保持独立.在获取新版本之后,用户继续与旧版本的资源交互,直到他们刷新主页面,之后加载新版本并丢弃旧版本.
另一个重点是appcache对资源何时被丢弃有不同的规则.Appcache基本上从不丢弃最新的资源集,并将它们作为一个整体进行缓存.为了防止滥用,它强制实施网站缓存的存储限制(有时只有5 MB).相比之下,浏览器缓存没有每站点限制,但如果达到全局缓存限制,将丢弃站点中的各个资源.