http协议中的缓存

本文主要探讨了HTTP协议中的客户端缓存,包括缓存的作用、基本原理和完整流程。通过服务器的缓存指令,如Cache-Control和ETag,以及客户端的缓存判断,详细阐述了强缓存和协商缓存的过程。此外,还提到了使用版本号或hash来管理客户端缓存的方法,以确保资源的更新。
摘要由CSDN通过智能技术生成

前言

我们常说的缓存,基本可分为两类:

  • 客户端缓存
  • 服务器缓存

由于服务器缓存跟http协议也没啥关系,它是需要一些服务器技术的支持(比如 redis等),所以这里就不涉及了。其实它大致的原理就是,比如客户端来了个请求,那么服务器就需要从数据库中读取数据,这样频繁的操作数据库, 就会造成效率上的问题,并且磁盘的读取速度是比较慢的;所以为了解决类似的问题,就可以使用服务器缓存,也就是将经常需要使用的数据保存起来,比如保存到内存中,以便后续使用。

今天就探讨探讨客户端缓存;客户端缓存跟http协议就有很大关系了,为什么这么说呢? 因为客户端(比如浏览器)要不要缓存,缓存过期时间是多少等等信息,是需要服务器告诉它的,那服务器又是怎么告诉浏览器的呢,那就只能通过http协议了。

一、什么是客户端缓存

所谓客户端缓存,顾名思义,就是将某一次的响应结果保存在客户端(比如浏览器)中,而后续的请求仅需要从缓存中读取即可;

客户端缓存的作用:

  1. 降低服务器的压力
  2. 减少网络带宽消耗
  3. 减少网络延迟,加快页面打开速度

二、缓存的基本原理

首先我们来看一个简单的客户端缓存流程图:
在这里插入图片描述
通过上图可知,当客户端第一次请求时,服务器给予了响应,客户端渲染执行,并将本次响应加入了缓存中,后续再请求时,就直接从缓存中读取。这是一个简单的客户端缓存,但实际情况并非这么简单,为什么呢?这就涉及到缓存策略了,首先我们考虑几个问题:

  1. 服务器在响应的时候,客户端是怎么知道该次请求是不是需要缓存?
  2. 哪些资源需要加入到缓存,哪些不需要呢?
  3. 缓存的时间的多久?
  4. 如果缓存过期了,可是服务器的资源并没有发生变动,该如何处理?
  5. 如果服务器的资源被改动,客户端又该如何更新缓存呢?

对于这些问题,就要涉及到http中的缓存协议了。

1. 来自服务器的缓存指令

对于上述第一个问题,服务器在响应的时候,客户端是怎么知道该次请求是不是需要缓存?其实就是服务器在响应时,附带了一些缓存指令,浏览器看到后,会自动识别,具体如下:


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值