首页 > 为什么有了etag还需要last-modified?

为什么有了etag还需要last-modified?

http协商缓存中:
Etag/lastModified过程如下:
1.客户端请求一个页面(A)。
2.服务器返回页面A,并在给A加上一个Last-Modified/ETag。
3.客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。
4.客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。
5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

那既然一定会验证etag是否匹配,还需要last-modified做什么???


ETag 比较的是响应内容的特征值,而Last-Modified 比较的是响应内容的修改时间。这两个是相辅相成的,并不是说有了ETag就不该有Last-Modified,有Last-Modified就不该有ETag。同时传入服务器时,服务器可以根据自己的缓存机制的需要,选择ETag或者是Last-Modified来做缓存判断的依据,甚至可以两个同时参考。


题主摘录的:

并在给A加上一个Last-Modified/ETag

这里是 or 的关系,非 and

测试:

  1. Apache对于静态内容默认会返回Last-modified和ETag.

  2. Nginx只会返回Last-modified(可配置etag on开启).

测试结果:

问题在于:

  1. 何时应该使用etag?

  2. 何时应该使用last-modified?

【热门文章】
【热门文章】