【问题标题】:Can bloated CacheStorage slow down Service Worker responses?臃肿的 CacheStorage 会减慢 Service Worker 的响应速度吗?
【发布时间】:2019-10-13 18:52:22
【问题描述】:

我在 SW 中缓存不透明的响应,它使 CacheStorage 膨胀到 6 GB+ 的数量级。有时,我看到 SW 响应比浏览器缓存中的响应慢。
臃肿的 CacheStorage 在通过 SW 服务请求时会导致读取速度变慢,从而导致性能下降吗?这种性能在多大程度上是由机器装载的硬盘驱动器驱动的——SSD 还是 HDD?

PS:我知道理想的解决方法是要么修复不透明的响应,要么根本不缓存它们。

【问题讨论】:

  • 不透明响应是混淆代码,是的,它可能会减慢您的软件速度,因为它需要“读取”混淆数据以了解您是否需要它的文件。

标签: performance service-worker workbox cachestorage


【解决方案1】:

缓存存储 API 让您可以对缓存过期进行编程控制,并允许您使用 JavaScript 中的缓存响应来构建独立于网络工作的复杂服务/回退策略,这在仅使用浏览器的 HTTP 时通常是不可能的缓存。

不过,我们并没有特别期望使用 Cache Storage API 会比 HTTP 缓存更快

无论何时运行 Service Worker 代码,都会产生一定程度的开销,有关该开销影响的详细信息可能会因存储介质、CPU、浏览器版本和任何数量的其他标准而异。我会说我不相信这些是不透明的响应这一事实在运行时性能方面发挥了重要作用,并且额外的配额使用实际上是“虚构的”。它只是转换为计算可用配额时使用的更高数字,但实际上并不会导致将更多数据写入磁盘。

【讨论】:

  • 谢谢杰夫!缓存不透明的响应使我们面临 StorageQuota 耗尽的风险,从而阻止任何进一步的资源缓存,这是有道理的。存储介质是不是意味着如果我们有两台机器,SSD和HDD,SW响应可以在SSD中比网络快,但在HDD机器上慢?我们总是从磁盘读取吗?还是通过将 CacheStorage 数据带入内存进行一些优化?
  • 我认为如果您使用 SSD 而不是 HDD,一切都会变得更快。即使是表面上应该在内存中的东西,作为虚拟内存方案的一部分,也会相当频繁地分页到磁盘,对吧?但是这里有太多变数在起作用,我觉得没有资格在很多情况下与权威交谈。
  • 正确!我认为了解 CacheStorage 的幕后工作原理可能有助于我们揭开一些秘密。
  • (请记住,Firefox、Safari 和 Chrome/Edge 都支持服务工作者 + 缓存存储 API,但每个都有非常不同的代码库。所以即使你了解了一种实现,你的观察不一定适用于其他浏览器。)
猜你喜欢
  • 2017-06-05
  • 2012-05-31
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
相关资源
最近更新 更多