我不明白浏览器缓存和ServiceWorker缓存之间的区别。
例如,在浏览器缓存中,为所有资源设置过期缓存。这样,头部不应在时限内核实。换句话说,您应该能够在脱机状态下获取资源,因为您不查询服务器。
另一方面,如果在ServiceWorker中设置缓存优先级,则可以在第二次之后获得脱机状态下的资源。
“浏览器缓存和ServiceWorker缓存都可以获得处于脱机状态的资源”
理解这一点好吗?
发布于 2019-07-25 15:59:49
我认为“浏览器缓存”是指http缓存。这是跨整个浏览器的响应的机会缓存。(主要是这样的。在某些浏览器中,它由顶层选项卡原点隔离。)浏览器可以随时从http缓存中删除响应。它不能保证数据在任何时候都会出现在http缓存中。不过,通常情况下,它使用基于LRU的启发式方法来老化旧的未使用的数据。站点可以使用缓存控制头影响在http缓存中存储的内容。
相反,在服务工作者中使用的缓存API更像IndexedDB。虽然它存储响应,就像http缓存一样,但它的不同之处在于站点完全处于控制之中。有一个显式的API来存储和检索数据。浏览器保证Cache API数据不会被删除,除非站点自己删除它,或者通过配额机制驱逐整个来源。与http缓存相比,cache API在其行为方面也被更精确地指定。但是,在加载过程中使用缓存API数据的唯一方法是通过一个ServiceWorker来匹配使用缓存API的请求,然后将Response返回给FetchEvent.respondWith()。
注意,ServiceWorker最终可能会与这两个系统交互。它可以显式地使用Cache API。它还可以在调用fetch()时从http缓存中提取。
https://stackoverflow.com/questions/57157242
复制相似问题