AppCache实际上使用浏览器缓存来支持其操作。这是浏览器等同于下载应用程序在本地运行。
用户第一次访问该页面时,该页面的资源将从服务器加载并存储在普通缓存中。如果页面指定了appcache清单,那么浏览器将下载清单并获取其中的所有资源(即使它们没有出现在嵌入清单的页面上)。然后这些被存储在appcache中。
用户第二次访问该页面时,浏览器将检查其appcache。如果该URL存在条目,则它会根据清单中指定的规则(清单可以将某些资源显式标记为从网络中获取)加载来自appcache而不是来自服务器的页面。
浏览器从appcache加载页面后,它会联系服务器以查看是否有更新的清单。如果清单已更新,它将从清单中获取资源。这些提取是使用普通的浏览器缓存规则完成的,因此其中一些资源实际上最终可能会从常规浏览器缓存而不是从服务器获取(这允许您在使用appcache开发离线应用程序时执行差异更新)。新版本的appcache与旧版本保持分开。获取新版本后,用户将继续与旧版本的资源进行交互,直到刷新主页面,然后加载新版本并丢弃旧版本。
另一个重要的问题是appcache在丢弃资源时有不同的规则。 Appcache基本上不会丢弃最新的一组资源,并将它们作为一个整体进行缓存。为了防止滥用,它强制实施存储限制(有时低至5 MB),即网站缓存的容量有多大。相比之下,浏览器缓存没有每站点限制,但是如果达到全局缓存限制,则会丢弃站点中的单个资源。