失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 浏览器-缓存(协商缓存和强制缓存)

浏览器-缓存(协商缓存和强制缓存)

时间:2020-03-02 08:20:32

相关推荐

浏览器-缓存(协商缓存和强制缓存)

1.强制缓存

[1]定义 强制缓存就是说在第一次访问服务器获取到数据之后,在过期时间以内不会去重复请求,而是通过浏览器缓存拿去数据;过期时间:在响应头中存在一个属性 http1.1版本 :强制缓存通过Cache-Control来实现 Cache-Control存在多个属性一般使用 max-age设置时间 max-age:缓存的资源将会在xxx秒后过期;http1.0版本中:通过expires来实现; expires标是未来资源会过期的时间;注:为了兼容性,两个版本的强制缓存都会被实现,http 1.1 版本的实现优先级会高于 http 1.0 版本的实现;状态码200获取数据:在有效期时间内,浏览器会直接在本地缓存中读取数据,若是超出时间,浏览器会重新发送请求,获取资源![2]举例说明 当我们在发送请求获取图片(图片验证码)的时候,图片一般使用的是强制缓存; 也就是说,当服务器中的数据发生了改变,我们获取的数据还是原来的!原因:因为浏览器在资源的有效期内,并不会向服务器发送请求(不会直到数据发生了改变)解决: 使用路经拼接时间戳,使url不同,浏览器会发送数据;使用post请求,因为post请求不会发生强制缓存的现象;

实例-图片的强制缓存

需求:我们在进行登录的时候使用的验证码为图片格式,当点击切换时发现 请求发送了,但是图片没有更换。

原因:该请求具有强制缓存。get请求+请求地址不变

解决:

可以修改请求的方式,如改为post(但是没有必要)可以在url后面拼接一个参数,参数值为时间戳,保证请求地址发生改变,这样浏览器就会去发送请求而不是使用本地的缓存了。

2.协商缓存

定义:协商缓存每次获取数据都会向服务器通信,并且会增加缓存标识。步骤 第一次请求服务器,服务器会返回资源,并且返回一个资源缓存标识,一起存储到浏览器缓存数据库;第二次请求服务器,浏览器将缓存标识发送给服务器;服务器拿到标识后检查标识是否匹配; 匹配:返回304状态码,表示资源没有更新,浏览器读取本地缓存中的数据;不匹配:表示资源已经更新,会将新的数据与新的标识一起返回到浏览器;版本 在http1.1版本 第一次发送请求:服务器通过Etag来设置响应头的标识; 存储到缓存中;第二次发送请求:服浏览器将信息放在If-None-Match中去访问服务器; 相同,返回304,表示资源没有更改;在http1.0版本 第一次发送请求,通过Last-Modified来设置响应头表示,将资源最后修改时间填入;第二次请求时:浏览器将If-Modified-Since中携带的时间与资源修改时间做对比 一致,返回状态码304,读取本地资源;不一致,表示资源已经更新

如果觉得《浏览器-缓存(协商缓存和强制缓存)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。