Caching 为什么一些css、js和图像文件是从磁盘缓存加载的,而其他文件不是?

Caching 为什么一些css、js和图像文件是从磁盘缓存加载的,而其他文件不是?,caching,browser-cache,http-caching,Caching,Browser Cache,Http Caching,我正在运行启用缓存插件的WP网站。 网站运行缓慢,所以我决定检查哪个元素的加载时间更长。 直接进入F12(chrome网络工具),然后进入标签网络。 我看到但不明白的是,为什么有些文件是从磁盘缓存加载的,而另一些则不是。 请参见所附图片(尺寸栏) 所以,如果你知道答案,请分享 谢谢大家! 内存缓存-存储和加载随机存取内存(RAM)中的资源。它很快,因为很容易从RAM加载资源。在您关闭浏览器或手动清除浏览器之前,这些资源将一直存在 磁盘缓存-它存储并加载来自磁盘的资源,并且是持久的。它不会通过网

我正在运行启用缓存插件的WP网站。 网站运行缓慢,所以我决定检查哪个元素的加载时间更长。 直接进入F12(chrome网络工具),然后进入标签网络。 我看到但不明白的是,为什么有些文件是从磁盘缓存加载的,而另一些则不是。 请参见所附图片(尺寸栏)

所以,如果你知道答案,请分享


谢谢大家!

内存缓存-存储和加载随机存取内存(RAM)中的资源。它很快,因为很容易从RAM加载资源。在您关闭浏览器或手动清除浏览器之前,这些资源将一直存在

磁盘缓存-它存储并加载来自磁盘的资源,并且是持久的。它不会通过网络联系Web服务器来获取数据。磁盘缓存通常作为硬盘的一部分

我猜浏览器会根据资源的类型或使用频率来决定缓存存储的类型


有时我们使用来自其他站点(第三方)的资产或资源。这些内容将通过网络传输,并且这些内容的大小将以字节为单位(B)。

似乎所有资源都是从缓存加载的。区别在于有些资源是从磁盘缓存中读取的。一些资源从内存缓存中读取,其余的来自304

ETag缓存控制决定是从本地磁盘/内存缓存读取资源还是需要刷新资源(304)。如果资源过期,chrome将向服务器发送请求,检查文件是否需要更新。304请求的大小只是请求实体的大小,而不是源文件的大小

如果资源没有过期,chrome将尝试从内存/磁盘缓存中读取,并且不会向服务器端发送任何请求

目前尚不清楚web浏览器如何决定缓存类型。
根据一些文档,我们只是注意到chrome更喜欢将css文件保存到磁盘缓存中,并将img/font/js文件保存到内存缓存中。

对于初学者来说,浏览器可能会被明确指示以不同于其他资源的方式缓存某些资源……您现在使用哪个插件?可能您需要改进设置。磁盘/内存缓存不会因速度减慢而降低。你的304可能是。虽然304表示未修改,但客户端仍必须执行HEAD请求才能找到。仅在您的屏幕截图中就有12个304,即对服务器的12个请求,如果不使用HTTP2/SPDY,这是浪费时间,即使使用HTTP2也是浪费时间。看起来这也是你CSS所做的一切,检查expires头,可能会增加。我正在使用缓存插件Spped of light,插件管理expire头。顺便说一下,我测试了许多缓存插件,它们都以相同的方式工作……我认为这还取决于托管环境是否支持SSL。在客户上,他们的域不是https(无证书),如果每次从tomcat读取内容时都执行刷新,则磁盘缓存不起作用。但在安装了正确的证书后,如果资源未被修改,内容将从浏览器光盘缓存(chrome)中读取。我们如何/在何处设置ETag和缓存控制?内存缓存是一个简单的主题,但磁盘缓存是复杂的。即使对于同一产品,我们在使用同一浏览器的不同安装和环境中也会有不同的行为。我认为部署的环境。(tomcat)、防火墙、路由、SSL(远程部件问题)也在决定是否使用磁盘缓存时发挥作用。对于某些客户,我无法使用光盘缓存,它总是会获得一个新的副本,但对于其他客户,它使用相同的产品和相同的浏览器从光盘读取数据(在所有情况下,资源都不会被修改)。我所说的资源是指一个javascript文件,我们有一个巨大的捆绑包(js文件),不使用磁盘缓存会导致性能问题。我搜索了好几天,为什么有些客户从未使用过光盘缓存?