Google chrome Chrome显示高缓存存储使用率

Google chrome Chrome显示高缓存存储使用率,google-chrome,service-worker,cachestorage,Google Chrome,Service Worker,Cachestorage,我一直在分析复杂应用程序的缓存存储使用,当我意识到存储的具有特定内容长度的图像或脚本实际上占用了缓存存储中的5N-10N空间时 考虑这个示例:我通过服务工作者从OpenStreetMap请求图像并将其存储在缓存中。缓存中只存储了一个图像。Chrome版本是最新版本(版本65.0.3325.146(官方版本)(64位)) 这是刷新后缓存存储的视图: 这是“清除缓存”选项卡的视图: 因此,问题是大小为6.4KB的图像实际上占用了13.8MB的缓存存储空间。我错过什么了吗 可以在小于10KB的脚本

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

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

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

这是“清除缓存”选项卡的视图:

因此,问题是大小为
6.4KB
的图像实际上占用了
13.8MB
的缓存存储空间。我错过什么了吗

可以在小于
10KB的脚本中看到这个实例,脚本占用了几乎
50KB的缓存。

因此,问题是:当文件通过服务人员缓存时,它们所占用的空间如何显著增加?我同意实际请求的权重比实际响应的权重更大,但不超过10倍

可能有用的链接:


  • 在OSM分片的情况下,高缓存使用率来自不透明的请求

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

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


    在第二种情况下,我认为这是一个bug。

    非常感谢,你完全正确-删除
    {mode:“no cors”}
    成功。在我们的情况下,我们使用
    传输编码:chunked
    头缓存文件,因此-没有
    内容长度
    头。对于较大的缓存空间使用情况,也可能是这种情况。“为了避免跨域信息泄漏,在用于计算存储配额限制的不透明响应的大小中添加了大量填充。对于Google Chrome,这意味着任何单个缓存的不透明响应对总存储使用量的最小贡献约为7 MB。”