性能优化之http缓存协商

什么是缓存协商

服务端的动态内容缓存包括缓存内容的创建、存储和过期检查一些列过程,然后对于浏览器缓存,缓存内容存储在浏览器本地,而内容由服务端生成,任何一方无法独立完成这一系列过程,因此他们之间必须有一种沟通机制,这就是http的缓存协商

怎么协商

①服务端必须告诉浏览器哪些内容可以被缓存,这样浏览器再请求这个内容时便不会直接向服务器请求完整内容,而是询问服务器状态有无变化,是否可以使用本地缓存
②浏览器只需要关心HTTP请求头中是否包含缓存协商信息(一般协商缓存针对get请求,post请求一般不用本地缓存)

Last-Modified协商方法

服务端需要在响应头中带上Last-Modified,然后给定GMT时间,代表上次修改时间。
此时浏览器再发出请求,可以在请求头中看到If-Modified-Sicnce ,这意味着浏览器在询问服务器,请求的内容是否在上次修改时间之后有更新,此时服务器需要检查这个内容在该时间后有无更新,这个过程就是缓存过期检查

304状态码

304Not Modified意味着服务器告诉浏览器这个内容没有更新,浏览器可以使用本地缓存的内容。

ETag协商方法

HTTP/1.1支持另一种缓存协商ETag。这种方法采取一串编码来标记内容,这串编码称为ETag,如果这个编码没发生变化说明内容没更新。ETag由服务器生成,浏览器在第一次请求后获取这个ETag下次请求在请求头中携带来询问服务器该内容是否有变化,然后服务器重新计算该值,如果ETag相同则返回304状态码,否则将最新内容和新的ETag返回给浏览器。

基于最后修改时间缓存协商的缺点

①有时候有一些文件需要频繁更新,但内容可能不变,但是每次文件修改时间变化后,不论内容是否变化,浏览器都会重新获取全部内容
②当服务器使用负载均衡配置了堕胎服务器,这样这些服务器的最后修改时间很难保证完全相同,也会导致客户端重新获取全部内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鲤余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值