图像是否被缓存?

图像是否被缓存?

我对 Apache(Web 服务器)和 Nginx(反向代理)环境中的缓存情况的调试有点困惑:

我正在尝试了解图像是否被正确缓存。

来自 devtools 的图像标题好像:

在此处输入图片描述

通过 Webpagetest 进行诊断好像:

在此处输入图片描述

devtools 显示,类似图像将被缓存,如下所示(右栏):

在此处输入图片描述

是否可以明确地说出某些内容,例如“是的,图片已正确缓存”或“否,图片未缓存”?或者“数据不足”?

答案1

您没有在响应标头中定义任何缓存控制。根据RFC 7231, 4.3.1

GET 请求的响应是可缓存的;缓存可以使用它来满足后续的 GET 和 HEAD 请求,除非Cache-Control标头字段另有指示([RFC7234] 第 5.2 节)。

你可以使用no-cache指定浏览器不应缓存图像或例如max-age=2592000指定它们可以缓存一个月。还有Expires用于表达响应被视为过时的日期/时间。

由于没有针对缓存的特定控制,并且 HTTP/1.1 规范没有定义默认的缓存行为,浏览器可以根据需要缓存你的图片. 来自 Ilya GrigorikHTTP 缓存

浏览器发出的所有 HTTP 请求都会首先路由到浏览器缓存,以检查是否存在可用于满足请求的有效缓存响应。如果匹配,则从缓存中读取响应,这样既可以消除网络延迟,又可以消除传输产生的数据成本。

答案2

我访问了您的网站,脚本被浏览器缓存。图片也被缓存,但不是由浏览器缓存,而是通过 javascript 缓存。请检查您的图片加载脚本。

相关内容