Chrome 显示高速缓存存储使用率很高
Chrome shows high cache storage use
我一直在分析复杂应用程序的缓存存储使用,当我意识到存储的具有一定内容长度N
的图像或脚本实际上占用了5N-10N
space缓存存储。
考虑这个示例:我通过服务工作者从 OpenStreetMap 请求图像并将其存储在缓存中。缓存中只有一张图片。 Chrome 版本是最新版本(版本 65.0.3325.146(正式版)(64 位))。
这是缓存存储刷新后的视图:
这是清除缓存选项卡的视图:
所以,问题是大小为 6.4KB
的图像实际上占用了 13.8MB
的缓存存储空间。我错过了什么吗?
可以在 https://googlechrome.github.io/samples/service-worker/basic/ 看到现场示例 - 不到 10KB
的脚本占用了几乎 50KB
的缓存存储空间。
所以,问题是:当文件通过 service worker 缓存时,它们占用的 space 怎么会显着增加?我同意实际请求比实际响应更重要,但不是 10 倍。
可能有用的链接:
- Chrome dev tools showing high cache storage utilisation
- Service Worker issues
- https://bugs.chromium.org/p/chromium/issues/detail?id=795134
对于 OSM 切片,高缓存使用率来自不透明请求。
当您缓存来自另一个域的内容时,您只能缓存它而不能以任何方式查看内容。这使得请求不透明。你不能fiddle你的代码中的内容,只能缓存它,它是一个黑盒子。为避免信息泄漏,浏览器在缓存资源时实施填充。出于这个原因,一张 100kb 的图像被报告占用 7mb 的缓存,实际报告的大小因浏览器而异。
这只意味着在抛出配额超出异常之前,您将能够在 SW 逻辑中缓存更少的不透明请求。所有缓存的请求——即使实际上很小——在缓存中占用大量(填充)space以避免信息泄漏。
在第二种情况下,我认为这是一个错误。
我一直在分析复杂应用程序的缓存存储使用,当我意识到存储的具有一定内容长度N
的图像或脚本实际上占用了5N-10N
space缓存存储。
考虑这个示例:我通过服务工作者从 OpenStreetMap 请求图像并将其存储在缓存中。缓存中只有一张图片。 Chrome 版本是最新版本(版本 65.0.3325.146(正式版)(64 位))。
这是缓存存储刷新后的视图:
这是清除缓存选项卡的视图:
所以,问题是大小为 6.4KB
的图像实际上占用了 13.8MB
的缓存存储空间。我错过了什么吗?
可以在 https://googlechrome.github.io/samples/service-worker/basic/ 看到现场示例 - 不到 10KB
的脚本占用了几乎 50KB
的缓存存储空间。
所以,问题是:当文件通过 service worker 缓存时,它们占用的 space 怎么会显着增加?我同意实际请求比实际响应更重要,但不是 10 倍。
可能有用的链接:
- Chrome dev tools showing high cache storage utilisation
- Service Worker issues
- https://bugs.chromium.org/p/chromium/issues/detail?id=795134
对于 OSM 切片,高缓存使用率来自不透明请求。
当您缓存来自另一个域的内容时,您只能缓存它而不能以任何方式查看内容。这使得请求不透明。你不能fiddle你的代码中的内容,只能缓存它,它是一个黑盒子。为避免信息泄漏,浏览器在缓存资源时实施填充。出于这个原因,一张 100kb 的图像被报告占用 7mb 的缓存,实际报告的大小因浏览器而异。
这只意味着在抛出配额超出异常之前,您将能够在 SW 逻辑中缓存更少的不透明请求。所有缓存的请求——即使实际上很小——在缓存中占用大量(填充)space以避免信息泄漏。
在第二种情况下,我认为这是一个错误。