62

在我的渐进式 Web 应用程序中,我应该在服务工作者中为我的静态资产使用缓存 API,还是应该只依赖浏览器的本机缓存控制来处理这些资产?有什么不同?

4

2 回答 2

36

Service Worker 缓存 API 的一个主要优点是它为您提供了比内置浏览器缓存更详细的控制。例如,您的服务工作者可以在用户首次运行您的 Web 应用程序时缓存多个请求,包括他们尚未访问的资产。这将加快后续请求。您还可以实现自己的缓存控制逻辑,确保被认为重要的资产保留在缓存中,同时删除较少使用的数据。

于 2016-02-04T01:00:45.767 回答
36

主要区别在于控制。浏览器缓存被 Cache-Control 标头驱动,这很好,直到它不是。有各种各样的策略来管理如何缓存网络可寻址资源;私人的,公共的;生存时间等

使用服务工作者缓存,您可以以编程方式控制这些资产的持久化方式。但这意味着负担在你身上。

浏览器缓存是我认为不可靠的。浏览器将根据设备存储可用性自动清除资产。例如,iPhone 过去常常忽略对超过 25kb 的任何资源的缓存。今天,我认为他们非常具有侵略性。

我知道 Facebook 团队几年前做了一项研究,发现他们希望浏览器根据标题缓存的文件中只有 25% 被缓存了。这意味着有额外的网络流量和服务器活动。

这就是为什么服务工作者缓存是更好的选择。不要去删除你的缓存头,只是不要依赖它们。

于 2017-12-25T22:31:10.147 回答