协商缓存中当文件的Last-Modified和Etag同时存在时,服务器在接收到请求后会优先采用哪种校验规则

浅伟吖_8158

浅伟吖_8158

2026-07-20

870人浏览

原创

etag优先级更高是因为http/1.1规范(rfc 7232)明确规定:当请求同时携带if-none-match和if-modified-since时,服务器必须先校验etag;etag是强校验器,基于内容摘要,精度高且不受时间戳偏差影响,而last-modified仅为弱校验器,仅依赖秒级时间戳。

协商缓存中当文件的last-modified和etag同时存在时,服务器在接收到请求后会优先采用哪种校验规则

当服务器同时提供了 Last-Modified 和 ETag,而客户端在请求中同时携带了 If-Modified-Since 和 If-None-Match 两个条件头时,服务器会优先校验 ETag。

为什么 ETag 优先级更高

HTTP 协议明确规定:若请求中同时存在 If-None-Match 和 If-Modified-Since,服务端必须先验证 ETag。只有当 ETag 不匹配(即未命中)时,才继续检查 Last-Modified —— 但实际中绝大多数主流服务器(如 Nginx、Apache、Express)在 ETag 校验失败后,不会 fallback 到 Last-Modified 校验,而是直接返回 200 响应体。

  • ETag 是内容摘要,精度高,能准确反映资源是否真正变化
  • Last-Modified 仅依赖文件系统时间戳,存在秒级精度不足、时钟偏差、批量覆盖重置等问题
  • HTTP/1.1 规范(RFC 7232)将 ETag 定义为“强校验器”,Last-Modified 是“弱校验器”,语义上就赋予前者更高权威性

客户端发什么头,决定服务器校验什么

服务器不会“自动选一个”,而是严格按客户端携带的请求头来响应:

Nginx
Nginx

高性能 Web 服务器与反向代理,宝塔 LNMP 环境核心组件

下载
  • 只带 If-None-Match → 只比对 ETag,忽略 Last-Modified
  • 只带 If-Modified-Since → 只比对 Last-Modified,忽略 ETag
  • 两个都带 → 先比 ETag;ETag 匹配则直接返回 304;不匹配通常不再查时间戳,直接返回 200 + 新内容

配置建议:避免冗余,明确意图

不必强行同时开启两者。选择依据是资源特性:

  • 静态构建产物(如 Webpack 输出的 app.a1b2c3.js)→ 用内容哈希 ETag,禁用或忽略 Last-Modified
  • 普通托管文件(图片、字体)→ 用 Last-Modified 足够,省去 ETag 计算开销
  • 若必须共存(如 Nginx 默认发 Last-Modified + etag on),确保 ETag 生成逻辑稳定,且不与后端时间戳冲突

注意:优先级不是“谁更早配置”,而是协议层硬性约定

这个优先关系与 Cache-Control、Expires 等无关,也不受前端 HTML 或 JS 影响——它完全由 HTTP 请求头组合和服务端实现决定。浏览器自动发送对应条件头,服务端按规范响应,中间任何环节(CDN、反向代理)都不能擅自修改或跳过该逻辑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

浏览器缓存

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2732

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2476

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4572

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php-src源码分析探索
php-src源码分析探索

共6课时 | 0.7万人学习

Golang云原生架构师课程
Golang云原生架构师课程

共49课时 | 4.7万人学习

Golang基础入门到精通(第二季)
Golang基础入门到精通(第二季)

共49课时 | 4.6万人学习