很明显,流行的站点没有使用 HTML 5 应用程序缓存来保存其设计的静态资源。
您误解了应用程序缓存的设计目的。这是应用程序缓存规范的第一段:
为了使用户即使在网络连接不可用时也能继续与 Web 应用程序和文档进行交互——例如,因为他们在 ISP 的覆盖范围之外旅行——作者可以提供一个清单,其中列出了 Web 所需的文件应用程序脱机工作,这会导致用户的浏览器保留文件的副本以供脱机使用。
http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#introduction-5
因此,应用程序缓存旨在允许 Web 应用程序作者在网络连接不可用时使他们的应用程序工作。
我无法想象 Google、Twitter 或 Facebook 在没有网络连接的情况下如何有效地工作。它们都依赖于用户与其服务器上的大量数据(在 Twitter 和 Facebook 的情况下,是关于其他用户的数据)进行交互。如果没有网络连接,它们本质上是无用的。
同样,localStorage
不是为存储可能更改的页面资源而设计的。(我猜你是在暗示这些网站可以将 CSS、JavaScript 和图像文件存储在 localStorage 中——如果我误解了,请道歉。)
本规范介绍了两种相关机制,类似于 HTTP 会话 cookie,用于在客户端存储结构化数据...
第一个是为用户执行单个事务但可能同时在不同窗口中执行多个事务的场景设计的......
第二种存储机制是为跨多个窗口的存储而设计的,并且持续时间超过当前会话。特别是,出于性能原因,Web 应用程序可能希望在客户端存储数兆字节的用户数据,例如整个用户创作的文档或用户的邮箱……
http://www.w3.org/TR/webstorage/#introduction
为了localStorage
用于 CSS、JavaScript 和图像文件,您需要页面中的一些 JavaScript 来检查页面localStorage
所需的每个资源,然后(以某种方式)检查服务器以查看是否有更新的版本,如果必要时,然后将资源添加到页面的 DOM 中(如果它是新的,则将其存储在 localSorage 中)。
基本上复制 Web 浏览器已经完成的缓存需要大量代码。当您的 JavaScript 正在检查localStorage
服务器时,页面会停止呈现。而当浏览器自己下载 CSS 和图像文件时,页面可以同时进行渲染。