HTTP 缓存

一、响应头

1、cache-control

  • max-age=
    资源保存的最长时间,单位为秒 eg: max-age=3153600

  • no-cache
    可以缓存,但是每次使用前都要和服务器进行确认,同时代理服务器也不能对资源进行缓存。一般网页框架不会经常改变就可以这样设置,如果资源长期不变,只需要发送体积很小的信息与服务器进行确认

  • no-store
    直接让浏览器不要缓存了,每次都要向服务器请求资源

  • private
    表示资源只能给这个浏览器缓存,其他什么代理服务器都不能进行缓存

    • public
      表示浏览器和代理服务器都可以缓存

2、etag

资源的标识,每次资源更新后,etag就会变化

3、expires

表示缓存的过期时间,当过期时间没有到达的时候,都表示资源未过期,不会和服务器要求更新资源。如果服务器时钟不同步,那么时间就是出现误差, 因此 expires经常会和last-modified配合使用

4、last-modified

表示资源的最后修改时间,客户端下次请求时可以检查最后修改资源的时间是否一致,如果一致就表示资源未修改,如果不一致就得让服务器返回新的资源

二、请求头

1、if-modified-since

值为上一次响应给客户端的 last-modified 值或者一个 etag 列表, 当且仅当服务器上没有任何资源的 ETag 属性值与这个首部中列出的相匹配的时候,服务器端才会返回所请求的资源,响应码为 200,并会返回相应的缓存头信息,客户端接收到新资源后会舍弃旧缓存,将新的资源缓存起来。 如果服务器上有匹配的资源,则返回403,内容为空,客户端直接使用本地的资源。

2、if-none-match

值为 上次返回的 etag 值, 如果与服务器的一致则返回403,客户端启用本地的缓存;不一致则返回新的资源,并更新。
当与 if-modified-since 一起使用的时候, if-none-match 优先级更高

值可以为 ’*‘,代表任意资源。它只用在进行资源上传时,通常是采用 PUT 方法,来检测拥有相同识别 ID 的资源是否已经上传过了。

3、if-match

值可以为 ’*‘,星号是一个特殊值,可以指代任意资源。

表示这是一个条件请求。在请求方法为 GETHEAD 的情况下,服务器仅在请求的资源满足此首部列出的 ETag值时才会返回资源。而对于 PUT 或其他非安全方法来说,只有在满足条件的情况下才可以将资源上传。

ETag 之间的比较使用的是强比较算法,即只有在每一个字节都相同的情况下,才可以认为两个文件是相同的。在 ETag 前面添加 W/ 前缀表示可以采用相对宽松的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值