1. 定义:
`Last-Modified`是一个HTTP响应头,它包含资源在服务器上最后被修改的日期和时间。这个头部通常与`cache-control`一起使用,用于检查服务器端资源是否更新。
2. 作用:
`Last-Modified`的主要作用是作为验证器来判断接收到的或者存储的资源是否一致。它允许服务器和客户端之间进行缓存验证和协商,减少不必要的数据传输,节省网络流量,提高页面加载速度。
3. 使用场景:
- 静态资源:对于不需要频繁更新的静态资源,可以使用`Last-Modified`进行缓存控制,提高网站性能。
- 动态资源:对于动态生成的资源,也可以使用`Last-Modified`进行缓存控制,减少不必要的资源请求。
4. 缓存验证流程:
- 第一次请求:浏览器会记住响应头的`Last-Modified`。
- 第二次及以后请求:浏览器会携带保存的`Last-Modified`作为`If-Modified-Since`放入请求头中,服务端会判断资源是否过期或更新。如果没有变化,则返回`304 Not Modified`状态码,内容为空,节省传输数据量;如果发生变化,则返回新的资源和`200 OK`状态码。
5. 格式:
`Last-Modified`的格式为`<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT`,其中`GMT`是国际标准时间。
6. 与`ETag`的区别:
`Last-Modified`的精确度比`ETag`要低,因此它是一个备用机制。`ETag`是一个可以与Web资源关联的记号(token),通常比`Last-Modified`更精确。
7. 浏览器兼容性:
`Last-Modified`被所有主流浏览器支持,包括Chrome、Firefox、Safari等。