Google chrome Chrome内存缓存与磁盘缓存

Google chrome Chrome内存缓存与磁盘缓存,google-chrome,caching,webpack,Google Chrome,Caching,Webpack,我对chrome内存缓存与磁盘缓存感兴趣?我使用webpack,common chunks插件,并使用chunkhash生成我的所有文件 内存与磁盘缓存有何不同。当我重新加载页面时,一些文件从内存缓存加载,一些文件从磁盘缓存加载(bundle.js和image.jpg从内存缓存加载,css从磁盘缓存加载)。有时候是不一样的。我们能控制它,选择从哪里加载什么吗?内存缓存似乎比磁盘缓存快。Chrome在许多抽象级别上实现缓存。其核心是HTTP(浏览器)缓存——其他缓存机制的后端。通常,缓存可分为:

我对chrome内存缓存与磁盘缓存感兴趣?我使用webpack,common chunks插件,并使用chunkhash生成我的所有文件


内存与磁盘缓存有何不同。当我重新加载页面时,一些文件从内存缓存加载,一些文件从磁盘缓存加载(bundle.js和image.jpg从内存缓存加载,css从磁盘缓存加载)。有时候是不一样的。我们能控制它,选择从哪里加载什么吗?内存缓存似乎比磁盘缓存快。

Chrome在许多抽象级别上实现缓存。其核心是HTTP(浏览器)缓存——其他缓存机制的后端。通常,缓存可分为:

  • HTTP缓存
  • 服务工作者缓存
  • 闪烁缓存
HTTP缓存

通过网络发出的每个请求都由HTTP缓存代理。当第一次请求时,缓存被覆盖。资源由源url键入

服务工作者缓存

要优雅地处理网络连接故障,您可以使用。缓存和缓存存储将再次从磁盘获取

闪烁缓存

Blink在两种创建模式中使用Http缓存作为后端—内存和简单(文件系统)。使用哪一个取决于全局为缓存设置的限制,即缓存可以占用多少内存。同时,当前渲染器缓存也获得了最大的共享。缓存的是字体、图像和脚本。如果全局内存使用率达到某个指定的阈值,则使用文件系统后端

强制内存缓存


如果您希望从内存覆盖默认机制提供文件,您可以实现自己的服务工作者。使用文件Api,可以读取资源并将其存储到内存中的对象中。然后,重写fetch事件将禁止使用此全局对象提供的内容进行网络和文件读取。

正如其名称所述:

“内存缓存”在内存(RAM)中存储和加载资源。所以这要快得多,但它是非持久性的。在关闭浏览器之前,内容一直可用

“磁盘缓存”是持久的。缓存的资源被存储并加载到磁盘和从磁盘加载

简单测试: 打开Chrome开发工具/网络。多次重新加载页面。表列“Size”将告诉您一些文件是“从内存缓存”加载的。
现在关闭浏览器,再次打开开发工具/网络并再次加载该页面。由于您的内存缓存为空,所有缓存文件都已“从磁盘缓存”加载。

Hi Igor,这是否导致Web包加载问题?你是怎么解决的?没有问题。这只是一个浏览器缓存功能,用于缓存webpack捆绑文件。嗨,Igor,当一些捆绑文件从磁盘加载,而另一些文件从内存加载时,我发现这是一个问题。发生这种情况时,它会抛出一个JSONP错误。这种情况很少发生。我不知道有这么简单。浏览器如何确定哪些资产要存储在内存缓存中,哪些资产要存储在磁盘缓存中?我们可以配置哪些资产应该缓存在内存缓存中吗?我的angular应用程序上有一些iTen,当我在本地运行时从磁盘加载,在生产中,这些文件根本不会被缓存。只有来自内存的缓存才能在生产环境中工作。你们知道是什么引起的吗?@RafaelAndrade请记住,angular提供了多个环境(在src/environments/*.ts中)。environment.prod.ts定义productiv构建环境,其中environment.ts定义本地开发环境。在LocalDevelopmentEnv中,您通常不希望缓存文件,以便您的本地更改始终应用于您的应用程序。