← 全部文章

技术与生活 / 一篇记录

304 没有正文,为什么页面还能显示?

客户端已经保存了一份资源,条件请求只是询问这份版本是否仍可使用。服务器返回未修改后,浏览器继续使用本地正文,减少了重复传输。

先明确这里的区别

客户端可以携带已有版本标识,让服务器在内容未变时返回 304。

域名 example.com 仅用于说明,核查自己的网站时请替换目标地址。

curl -I https://example.com/

怎样判断处理正确

先取得 ETag,再用 If-None-Match 发起条件请求。

先记录资源标识,再发起条件请求。服务端返回的版本标识改变时应获得新的正文;如果资源内容改变而标识未变,就要检查缓存生成逻辑。

条件请求并不只依赖 ETag,也可能使用修改时间。不同验证器的精度和更新机制不同,应检查实际服务返回什么。资源被重新部署但内容相同时,验证结果也可能取决于生成策略。

需要留意的是,ETag 是不透明标识,不应假设它一定是内容的 MD5。

参考:HTTP 文档。

搜索文章

输入关键词,找回一篇记录。