【问题标题】:The difference between browser cache and ServiceWorker cache浏览器缓存和ServiceWorker缓存的区别
【发布时间】:2019-12-01 02:12:22
【问题描述】:

我不明白浏览器缓存和ServiceWorker缓存的区别。

例如在浏览器缓存中,为所有资源设置过期缓存。这样HEAD就不应该在时限内验证。换句话说,您应该能够在离线状态下获取资源,因为您不查询服务器。

另一方面,如果在ServiceWorker中设置缓存优先级,则可以在第二次之后获取离线状态的资源。

“浏览器缓存和ServiceWorker缓存都可以在离线状态下获取资源”

这样理解好吗?

【问题讨论】:

    标签: caching service-worker browser-cache


    【解决方案1】:

    我认为“浏览器缓存”是指 http 缓存。这是整个浏览器中响应的机会性缓存。 (大多数情况下,就是这样。在某些浏览器中,它被顶级选项卡来源隔离。)浏览器可以随时从 http 缓存中驱逐响应。它不保证数据会随时出现在 http 缓存中。不过,一般来说,它使用基于 LRU 的启发式算法来老化较旧的未使用数据。站点可以使用缓存控制标头影响存储在 http 缓存中的内容。

    相比之下,Service Worker 中使用的 Cache API 更像 IndexedDB。虽然它像 http 缓存一样存储响应,但它的不同之处在于站点完全处于控制之中。有一个明确的 API 用于存储和检索数据。浏览器保证不会删除 Cache API 数据,除非站点自己执行或通过配额机制驱逐整个源。与 http 缓存相比,缓存 API 的行为也更加精确。但是,在加载期间使用 Cache API 数据的唯一方法是通过 ServiceWorker 匹配使用 Cache API 的请求,然后将 Response 返回到 FetchEvent.respondWith()

    请注意,ServiceWorker 最终可能会与这两个系统进行交互。它可以显式使用缓存 API。它也可以在调用fetch()时从http缓存中拉取。

    【讨论】:

      猜你喜欢
      • 2012-03-28
      • 2016-09-16
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多