Web缓存是存在服务器和客户端之前的资源副本。客户端会缓存请求过的静态资源(图片,CSS 文件,JS文件等),当用户再次请求相同的url时,浏览器会根据缓存规则判断是否使用已经缓 存的静态资源文件,或者绕过资源缓存直接请求服务器重新获取资源。
Web缓存也就是HTTP缓存机制,是前端性能优化的重要措施,利用Web缓存可以:
Web缓存机制主要是利用HTTP协议定义的首部信息控制缓存。常见的与缓存相关的首部有:
版本 | 首部 | 实例 | 描述 |
---|---|---|---|
HTTP1.0 | Pragma | Pragma | 设置页面是否缓存,Pragma为缓存,no-cache表示忽略缓存 |
Expires | Mon, 22 Jul 2002 11:12:01 GMT | Expires的值是格林尼治时间格式的参数,用来设置过期时间,即定义资源的失效时间,失效时间内则请求使用缓存资源 | |
HTTP1.1 | Cache-Control | Cache-Control:max-age=600 | Cache-Control首部是为了解决服务器和客户端时间不一致问题导致缓存失效的问题,(a)max-age=600:配置的是请求发起时开始计算的相对时间(毫秒),当前参数时间内请求资源使用缓存资源 (b)no-cache:每次发起请求都需要验证缓存资源的新鲜度,新鲜度满足则返回304状态码,使用缓存资源,否则返回200状态码,返回资源主体(c)no-store:不缓存,每次请求需要从服务器重新获取资源(d)public:所有内容只有客户端可以缓存(e)private:只允许客户端缓存 |
Last-Modified/If-Modified-Since | 这两个首部需要配合使用,同时需要Cache-Control标识参与。(a)Last-Modified:服务器在相应资源请求时,标识资源最后的修改时间,(b)If-Modified-Since :资源过期并且存在Last-Modified声明,请求首部 If-Modified-Since获取Last-Mdodied的值发送到服务器和请求资源的修改时间比对,如果服务器资源修改过则返回资源主体和200状态码到浏览器,浏览器更新缓存资源,否则说明资源无修改返回304状态码 | ||
Etag/If-None-Match | W/v20.1 | 配合Cache-Control使用。(a) Etag是请求的服务器资源的唯一标识,资源改动则标识更改,从而验证资源是否更新。(b)当资源过期请求携带首部If-None-Match赋值Etag的标识值,与服务资源标识进行比对,如果发生变化则变化则返回200状态码和资源主体,否则返回304状态码 |
HTTP缓存可以根据缓存过程分为强制缓存和协商缓存。
(1)强制缓存:向浏览器缓存查询请求结果,根据缓存结果规则是否使用缓存资源
强制缓存的相关的首部:Expires和Cache-Control
(2)协商缓存:当强制缓存失效,缓存规则使用协商缓存,HTTP请求向服务器发起缓存器验证,服务器判断缓存是否生效。
协商缓存相关的首部:Last-Modified / If-Modified-Since和Etag / If-None-Match
web缓存处理步骤很简单,包括了接收请求,解析报文,查询缓存,新鲜度检查,创建响应和发送,记录日志是事务操作的可选步骤。
浏览器缓存分为内存缓存和硬盘缓存,内存缓存读取速度快,时效性好;硬盘缓存读取缓存时需要I/O操作,重新解析缓存内容,相对于内存缓存速度慢但是不会占用内存资源。
浏览器将JS脚本资源和图片资源存储在内存缓存,css,xml文件存储的硬盘文件。
当浏览器刷新时,js,图片等资源直接从内存中加载,css文件需要重用从硬盘读取并解析渲染到页面。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有