HTTP(Ⅵ)—— 缓存验证Last-Modified和Etag的使用

本文介绍了HTTP缓存验证机制,通过Last-Modified和Etag头来判断资源是否更新。浏览器利用If-modified-Since或If-Unmodified-Since与Last-Modified配合,以及If-Match或If-Non-Match与Etag配合,从服务器验证资源的最新状态。通过示例展示了如何设置和测试这些头部信息,以实现高效的缓存利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、先看一张图

浏览器创建一个请求,然后请求到达本地缓存,如果找到了则直接返回给浏览器,如果没有,可能会经过代理服务,然后去代理缓存中去找,如果命中,则直接返回,如果没有,才会到源服务器进行请求。

二、数据如何进行验证,有两个头。

1、Last-Modified上次修改时间,它配合If-modified-Since和If-Unmodified-Since使用。如果我们请求一个资源,这个资源返回的有Last-Modified。浏览器进行下一次请求的时候,,通过If-modified-Since或If-Unmodified-Since把Last-Modefied的值带到服务器上,服务器通过读取If-modified-Since的值然后对比资源存在的地方,然后去对比上次修改的时间,如果时间是一样的,代表这个资源还没有重新被修改,服务武器告诉浏览器可以使用缓存里面的内容

2、Etag数据签名,我们的资源对他的内容会产生唯一的签名,只要修改,签名就会改变,最常见的就是对资源内容进行哈希计算,浏览器下一次请求,通过If-Match或If-Non-Match把Etag的值带到服务器上,然后服务器对比浏览器传过来的签名和服务器端资源的签名是否一致,如果相同,就不需要返回一个心的内容。

三、测试

1、修改server.js如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值