Open Mardanjan opened 4 years ago
http缓存指的是:当客户端向服务器端发送请求资源时,会先抵达浏览器缓存,如果浏览器有要请求的资源的副本,就直接从浏览器缓存中提取,而不是从服务器请求这个资源
常见的http缓存只能缓存get请求响应的资源,对于其它类型的响应则无能为力
htpp缓存都是从第二次请求开始的,第一次请求资源时,服务器返回资源,并在response header中回传资源的缓存参数, 第二次请求时,浏览器判断这些请求参数,命中强缓存就直接返回200,并不会请求服务器,否则把请求参数加到request header中传给服务器,看是否命中协商缓存,命中则返回304,否则服务器返回新资源。
根据是否向服务器发送请求来分,可以分为强制缓存和协商缓存,根据是否被单个或多个用户使用来分为私有缓存和共享缓存,如果强制缓存生效,则不需要跟服务器打交道,协商缓存是否生效都需要和服务端打交道。
一些对比
强制缓存的情况下,只要缓存还没过期,就会直接从缓存中提取数据,就算服务端有数据变化,也不会从服务端获取数据,这样就无法获取到修改后的数据,解决办法有:在修改后的资源加上随机数,确保不会从缓存获取
尽量减少304的请求,因为我们知道,协商缓存每次都会与服务器打交道,所以性能上不是很好,从性能上来看,尽量多使用强缓存
会有浏览器的兼容性问题
HTTP2