每当我使用 Firefox 访问某些网站时,都会出现下面的对话框,要求我“将数据存储在您的计算机上以供离线使用”。
如果我使用 Firefox,它会显示,但如果我使用 Chrome,则不会显示。
为什么会出现这个?这是什么意思?这个数据存储是什么?它和浏览器缓存有什么不同?为什么FF可以显示它而Chrome不显示?
我正在使用 Ubuntu 12.04.2、Firefox 23.0 和 Chromium 28.0.1500.71 Ubuntu 12.04(28.0.1500.71-0ubuntu1.12.04.1)
答案1
该网站正在请求使用HTML5 离线 Web 应用程序 API:
典型在线 Web 应用程序的用户只有在连接到 Internet 时才能使用这些应用程序。当他们离线时,他们无法再使用在线工具查看电子邮件、浏览日历约会或准备演示文稿。而本机应用程序则提供这些功能:电子邮件客户端在本地缓存文件夹,日历在本地存储事件,演示文稿包在本地存储数据文件。
此外,离线时,用户完全依赖其 HTTP 缓存来获取应用程序,因为他们无法联系服务器来获取最新副本。
HTML 5 规范为此提供了两种解决方案:基于 SQL 的数据库 API(用于在本地存储数据)和离线应用程序 HTTP 缓存(用于确保即使用户未连接到网络时应用程序也可用)。
深入研究 HTML5进一步解释:
简单来说,离线 Web 应用程序是一串 URL 列表 — HTML、CSS、JavaScript、图像或任何其他类型的资源。离线 Web 应用程序的主页指向此列表,称为清单文件,它只是位于 Web 服务器其他位置的文本文件。实现 HTML5 离线应用程序的 Web 浏览器将从清单文件中读取 URL 列表,下载资源,将其缓存在本地,并在资源发生变化时自动更新本地副本。当您尝试在没有网络连接的情况下访问 Web 应用程序时,您的 Web 浏览器将自动切换到本地副本。
正如您所注意到的,这与普通的浏览器缓存是分开的。它们有两个不同的用途;浏览器缓存用于加速对常用资源的访问,而这用于存储离线 Web 应用程序及其资源。
Chrome 似乎允许 Web 应用在未经用户许可的情况下自行离线存储。而 Firefox 则会在允许 Web 应用使用离线 API 之前请求许可。
答案2
它希望你“下载”这个页面,这样就可以在没有互联网连接的情况下观看,有时不是整个页面,而是需要很长时间才能加载