我在响应中发送以下标题。 "Cache-Control: public, max-age=300"
,但每次点击刷新时我都会得到一个200
响应(再次向服务器发出请求)。如果我添加“Expires”标题,也会发生同样的情况。
但是如果我在标题中添加一个ETag,那么我在刷新时得到304
(请求进入服务器,服务器准备响应,然后匹配ETag并返回204
响应)。
我应该更改哪些内容以便使用"Cache-Control"
标头
内容是从本地缓存提供的,在年龄超过"max-age"
之前,没有请求发送到服务器?
编辑:这是一张未缓存的图片https://image-dev-dot-quizizz-dev.appspot.com/resource/gs/quizizz-image/rejected.jpeg
答案 0 :(得分:1)
您的图片 在代理缓存中 - 请注意,在回复中,您获得了Age
标头。此外,300秒内的每个下一个请求都需要更少的时间。为什么状态不是304?根据{{3}}:
200(来自缓存)vs 304
现在有一天我在进行网站性能审核时注意到了 我们的很多资产都返回了304状态。比较时 另一个网站,我注意到它返回200(从缓存)状态 码。这引起了我的兴趣,我想深入挖掘。
事实证明,当给出200(来自缓存)响应时,它意味着 设置了内容的未来到期日期。 本质上是 浏览器甚至没有真正与服务器通信来检查 文件。它知道在失效日期之前不要这样做 过期。强>
相比之下,304进入服务器并收到响应 数据没有变化。 服务器告诉浏览器使用 结果缓存。