Chrome显示高缓存存储空间

Ale*_*lov 6 google-chrome service-worker cachestorage

我一直在分析复杂应用程序的缓存存储使用情况,当我意识到存储的图像或具有特定内容长度的脚本N实际上占用5N-10N了缓存存储空间.

考虑这个示例:我通过服务工作者从OpenStreetMap请求图像并将其存储在缓存中.缓存中只存储一个图像.Chrome版本是最新版本(版本65.0.3325.146(官方版本)(64位)).

这是刷新后缓存存储的视图: cache_storage_view

这是清除缓存选项卡的视图: 在此输入图像描述

因此,问题在于具有6.4KB实际占用13.8MB高速缓存存储大小的图像.我错过了什么吗?

实例可以在https://googlechrome.github.io/samples/service-worker/basic/上看到- 少于10KB几乎占用50KB缓存存储的脚本. 在此输入图像描述 在此输入图像描述

因此,问题是:当文件通过服务工作者缓存时,它们占用的空间会显着增加?我同意实际请求的权重大于实际响应,但不是10倍.

可能有用的链接:

  1. Chrome开发工具显示高缓存存储利用率
  2. 服务工作者问题
  3. https://bugs.chromium.org/p/chromium/issues/detail?id=795134

pat*_*ate 9

在OSM磁贴的情况下,高缓存使用来自不透明请求.

当您从另一个域缓存某些内容时,您只能缓存它而不会以任何方式查看内容.这使得请求不透明.你无法摆弄代码中的内容,只能缓存它,它是一个黑盒子.为了避免信息泄漏,浏览器在缓存资源时实现填充.因此,据报道,100kb的图像占用了7mb的缓存,实际报告的大小因浏览器而异.

这只意味着您将能够在超出配额超出异常之前在SW逻辑中缓存更少的不透明请求.所有缓存的请求 - 即使实际上非常小 - 都会在缓存中占用大量(填充)空间以避免信息泄漏.

在第二种情况下,我认为这是一个错误.