HTTP 缓存是什么?执行流程、缓存控制

一、是什么

  • 缓存是保存在代理服务器或本地的资源副本,为了减少重复请求相同资源的操作、减轻服务器压力、更快地加载页面。

二、作用

  • 减少重复请求相同资源,能节省通信流量。
  • 能缓解网络瓶颈问题,能更快加载页面。
  • 服务器可以更快响应,避免加载的情况。
  • 缓解了距离问题,每台网络路由器都会增加流量的时延。把缓存放在附近机房,文件传输距离就短了。

三、 分类

1、(私有)浏览器缓存:Cache-Control: private

  • 单个用户使用。
  • 大多数浏览器都会把常用的文档缓存到硬盘和内存中。
  • 有了本地缓存就能离线浏览文档了,比如浏览器中能向前/后已缓存的页面、保存页面、查看源码。

2、(公有)代理缓存: Cache-Control: public

  • 多用户使用。
  • 可以被中间代理、CDN 等中间人缓存。代表用户与服务器联系,把重复资源缓存到本地共享返回给有需要的用户。这样资源能够重复使用,减少网络拥堵和延迟。

在这里插入图片描述

四、执行流程

1、接收:获取请求报文

2、解析:对报文解析,提取出 URL 和各种首部

3、查询:查看是否已经有本地副本了,否则获取一份并保存在本地。

4、新鲜度检测:查看已缓存的副本是否足够新鲜,否则询问服务器是否有更新。

5、创建响应报文:用新的首部和已缓存的主体创建一个响应报文。

6、发送:把响应报文发送给客户端。

7、日志:可以创建一个日记文件描述这个事务。

在这里插入图片描述

五、缓存控制

  • Cache-control

    说明
    no-store禁止缓存
    no-cache缓存前确认其有效性
    max-age = [秒]响应文档过期时间, 单位为秒。值为 0 时代表响应文档不缓存
    private | public(私有)浏览器缓存 | (公有)代理缓存
    must-revalidate可缓存但得向服务器进行新鲜度检查
    # 缓存有效期为 3600 秒
    Cache-Control: max-age=3600
    
    # 禁用缓存
    Cache-Control: max-age=0
    Cache-Control: no-store
    
  • Expires

    Expires表示过期时间,但由于一些服务器时钟不同步会导致偏差,所以最好是使用 max-age。如果有 Cache-Control值,那么 Expires 值会被忽略,就是说 Cache-Control 优先级高于 Expires

    Expires: Thu, 10 Sep 2020 23:27:59 GMT
    

六、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值