首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪烁内存缓存存储什么?

闪烁内存缓存存储什么?
EN

Stack Overflow用户
提问于 2018-10-23 13:15:20
回答 2查看 1.2K关注 0票数 12

除了浏览器缓存之外,还有其他几种浏览器缓存数据的方式。对于Chrome,呈现引擎眨眼中还有另一个缓存,它在内存中存储图像、样式、脚本和字体(可能更多)。

此缓存用于站点上的连续导航。从闪烁缓存传递的资源在“网络”选项卡中使用(from memory cache)标记。从浏览器缓存提供的资源被标记为(from disk cache)

我现在的问题是,哪些资源存储在这个非常快的缓存中并从这个高速缓存中传递?,根据我的测试,它变化很大:

  • 对于直接在HTML中的图像和脚本标记,它工作得非常好。
  • 它有时适用于直接在HTML中的样式(链接)标记。有时,它不工作(在同一个浏览器与同一个会话)。
  • 它几乎从不适用于以编程方式插入到HTML中的脚本标记。不过,有时候它也能用。

磁盘缓存 hits和内存缓存 hits之间的一个巨大差异与服务工作者结合在一起变得显而易见。无法在服务工作器中观察到内存中缓存所提供的请求(因为缓存位于服务工作者之前)。磁盘缓存提供的请求通过服务工作者传递(因为浏览器缓存位于Service后面)。

为了显示所解释的行为,我构建了一个包含所有资源类型的测试页面:https://dm-clone-optimized.app.baqend.com/

您可以使用顶部的链接浏览站点,并在“网络”选项卡和控制台中观察请求的行为。每个页面都加载相同的资源。

经过一些导航(Chrome 70.0.3538.67)之后,大多数情况下我都会得到这种行为:

  • 从网络中获取HTML
  • 脚本标记scripts.jsscripts2.js来自内存缓存。
  • 图像标记logo.png也来自内存中。
  • 样式链接标记styles.css来自磁盘缓存 :(
  • 通过编程添加的脚本标记scripts2.js?id=1也来自磁盘缓存 :(

不过,有时候,我真的很幸运,所有的东西都是从内存缓存中提供的:

我很想了解闪烁内存缓存是如何工作的,以及如何通过适当的cache control头来调优我的站点以便将它用于所有资源。

编辑--编辑--

我最关心的是:为什么根本不缓存动态添加的脚本?--这对像require.js这样的框架有明显的影响,因为它们将所有依赖项作为动态添加的脚本标记插入。

EN

回答 2

Stack Overflow用户

发布于 2018-11-28 14:37:31

闪烁内存缓存工作

Blink有四个内存分配器PartitionAllocOilpantcmallocsystem allocator

因此,开发Chrome的团队已经将tcmallocsystem allocators从Blink中删除

眨眼(PartitionAlloc+Oilpan)是渲染器内存的第二大消费国,在典型情况下消耗10-20%,在可丢弃、CC和V8中保留部分内存。

在Blink中,主要的内存使用者是:

  • 大型StringImpls (由JavaScript源代码使用)
  • 共享缓冲区(由参考资料使用)
  • 向量与HashTables

建议是:“识别对Blink的总内存有影响的缓存,并仅在其上实现purgeMemory()。”

  • 减小(DOM对象)的大小不会产生影响
  • 在大多数情况下,丢弃缓存不会影响

他们正在努力摆脱"DiscardableMemory“项,这将有助于执行强制分离所有布局对象等操作,从而释放由布局树保留的内存。

票数 2
EN

Stack Overflow用户

发布于 2018-11-28 17:28:53

我相信这是铬优化的结果,他们让它对你来说很详细。

这些文件总是进入磁盘缓存。它们也会进入记忆中,很快就会脸红。

Chrome非常聪明,可以要求正在运行的进程在磁盘上查找之前,在内存中仍然有一个已加载的副本。该步骤具有很高的命中率,因为这些图像/js正在积极地用于某些事情。

您将无法控制chrome如何管理它们的TTL /内存容量可以用来保持blob热。Chrome团队在基于实际硬件容量和系统加载的动态调优方面做了很多工作。

如果你要求将你的应用程序保存在内存中。您正在失败的Sun/Adobe的邪恶方式:使他们的应用程序DLL在内存中热(通过托盘图标/服务),并减缓其他人的速度。

如果是应用程序的最终用户可能想要使用,使用电子,然后按照Whatsapp/Slack/etc来构建一个始终运行的应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52950068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档