强缓存和协商缓存

强缓存和协商缓存是HTTP缓存机制中常用的两种策略。

强缓存是指浏览器在发送请求之前,先检查本地缓存中是否有匹配的缓存项,如果有并且缓存未过期,则直接使用该缓存,不再向服务器发送请求。常用的强缓存策略有两种:Expires 和 Cache-Control。

  • Expires 是一个时间戳,表示缓存的过期时间。服务器在响应头中返回该字段,浏览器在接收到该响应后,在过期时间之前的任何请求都会直接使用缓存。缺点是,由于是服务器返回的时间,所以可能和客户端时间不同步,不够灵活。
  • Cache-Control 是HTTP/1.1规范中引入的字段,可以设置多个指令,来控制缓存策略。常用的指令有:
    • max-age:表示缓存的最大有效时间,以秒为单位。
    • no-cache:表示不使用强缓存,需要经过服务器验证缓存的有效性。
    • no-store:表示禁止缓存,每次都要向服务器发送请求。

协商缓存是指浏览器在发送请求之前,先向服务器发送一个条件请求,询问是否可以使用缓存。如果服务器返回304状态码,表示缓存有效,浏览器则可以直接使用缓存,不再下载资源。常用的协商缓存字段有两个:Last-Modified 和 ETag。

  • Last-Modified 是一个时间戳,表示资源的最后修改时间。服务器在响应头中返回该字段,浏览器在下次请求时,会将该字段放到If-Modified-Since头中发送给服务器,如果资源的最后修改时间与服务器上的一致,则返回304状态码,表示资源未修改。
  • ETag 是一个唯一的标识符,可以是任意字符串。服务器在响应头中返回该字段,浏览器在下次请求时,会将该字段放到If-None-Match头中发送给服务器,如果服务器上的ETag与浏览器发送的一致,则返回304状态码,表示资源未修改。ETag相对于Last-Modified更加精确。

强缓存和协商缓存可以结合使用,当强缓存失效时,浏览器会发送一个条件请求,验证缓存的有效性,如果缓存有效,则返回304状态码,浏览器直接使用缓存。否则,返回200状态码,浏览器下载新的资源。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值