一、HTTP缓存有什么作用?缓存是为了重复使用而被存储的,可以减少浏览器和服务器之间通信的次数、降低网络延迟、加速页面加载、提高用户体验性等。不但能使网页打开速度更快,还能减少服务器的压力。 二、 浏览器的缓存策略有哪些?浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存;否则,则向服务器发起请求并携带缓存标识。 根据是否需向服务器发起请求,将缓存过程划分为两个部分:强制缓存和协商缓存,强缓存优先于协商缓存。 1、强缓存(Expires、Cache-control)
① 强缓存命中则直接读取浏览器本地的资源,在network中显示的是from memory或者from disk ② 控制强制缓存的字段有:Cache-Control(http1.1)和 Expires(http1.0) ③ Cache-control是一个相对时间,用以表达自上次请求正确的资源之后的多少秒的时间段内缓存有效 ③ Expires是一个绝对时间。用以表达在这个时间点之前发起请求可以直接从浏览器中读取数据,而无需发起请求 ④ Cache-Control的优先级比Expires的优先级高。前者的出现是为了解决Expires在浏览器时间被手动更改导致缓存判断错误的问题。如果同时存在则使用Cache-control 2、协商缓存(Last-Modified、ETag)
① 协商缓存的状态码由服务器决策返回200或者304 ② 当浏览器的强缓存失效的时候或者请求头中设置了不走强缓存,并且在请求头中设置了If-Modified-Since 或者 If-None-Match 的时候,会将这两个属性值到服务端去验证是否命中协商缓存。如果命中了协商缓存,会返回 304 状态,加载浏览器缓存,并且响应头会设置 Last-Modified 或者 ETag 属性。 ③ 对比缓存在请求数上和没有缓存是一致的,但如果是 304 的话,返回的仅仅是一个状态码而已,并没有实际的文件内容,因此在响应体体积上的节省是它的优化点。 ④ 协商缓存有 2 组字段(不是两个),控制协商缓存的字段有:Last-Modified / If-Modified-since(http1.0)和 Etag / If-None-match(http1.1)
⑤ Etag / If-None-match 的优先级比 Last-Modified / If-Modified-since高 3、缓存过程HTTP缓存都是从第二次请求开始的:
三、浏览器缓存控制机制有哪些?浏览器缓存控制机制有两种:HTML Meta标签 和 HTTP头信息 1、使用HTML Meta 标签HTML Meta标签是应用在HTML文件中的head头部分。 主要作用就是告诉浏览器此HTML页面不被缓存,每次访问都去服务器上下载。
2、使用HTTP头信息控制缓存
页面的缓存状态是由HTTP协议中关于缓存的信息头决定的,主要的控制关键字有4种: Last-Modified、Etag、Cache-Control、Expires
① Expires:缓存过期时间
② Cache-Control:缓存控制
③ Last-Modified:资源最后修改时间
④ ETag:文件内容唯一标识(一般都是 hash 生成的)
四、哪些请求不能被缓存?① HTTP 信息头中包含 Cache-Control:no-cache,pragma:no-cache,或 Cache-Control:max-age=0 等告诉浏览器不用缓存的请求 ② POST 请求无法被缓存 ③ HTTP响应头中不包含Last-Modified/ETag,也不包含Cache-Control/Expires的请求无法被缓存 ④ 需要根据 Cookie,认证信息等决定输入内容的动态请求是不能被缓存的 ⑤ 经过 HTTPS 安全加密的请求(有人也经过测试发现,ie 其实在头部加入 Cache-Control:max-age 信息,firefox 在头部加入 Cache-Control:Public 之后,能够对 HTTPS 的资源进行缓存,参考《HTTPS 的七个误解》) 五、部署时缓存的问题1、我们不仅要缓存代码,还需要更新代码。如果静态资源名字不变,怎么让浏览器既能缓存,又能在有新代码时更新?最简单的解决方式就是静态资源路径添加一个版本值
然而这种处理方式在部署时有问题。 背景:静态资源和页面是分开部署的。
这些问题的本质是以上的部署方式是“覆盖式发布”,解决方式是“非覆盖式发布”。
简单来说就是给静态文件名加hash值。 那如何实现呢?使用webpack持久化缓存
|
原文地址:https://blog.csdn.net/qq_38290251/article/details/131675965
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://www.msipo.com/article-1138.html 如若内容造成侵权/违法违规/事实不符,请联系MSIPO邮箱:3448751423@qq.com进行投诉反馈,一经查实,立即删除!
Copyright © 2024, msipo.com