For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
缓存技术的应用在许多软件开发项目中都是非常常见的一个功能,而本文我们就通过案例分析来简单了解一下,浏览器缓存概念与应用类型分析。
一、浏览器缓存
1.1浏览器缓存
缓存是一种本地保存远端资源的机制,不管是在客户端、还是在服务端存储着,用相同的URL进行数据请求,可以直接从缓存中请求资源而不再访问源服务器。
Web前端缓存大致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN缓存)、浏览器缓存。
浏览器缓存也包含很多内容:HTTP缓存、indexDB、cookie、localstorage等等。这里我们只讨论HTTP缓存相关内容。
1.2浏览器缓存的意义:
浏览器在本地对用户对近请求过的文档进行存储,当用户再次访问同一页面时,浏览器就可以直接从本地磁盘加载文件。浏览器缓存的意义主要在:
a.避免了冗余的数据传输,节省流量;
b.加快了用户访问网页的速度;
c.减小了服务器的压力。
二、缓存类型
强制缓存
用户请求数据,如果命中强缓存,则不向服务器请求,而直接从本地资源获取,返回200状态码,并提示fromdiskcache或frommemorycache(比从disk快)。
协商缓存
在用户请求资源时,浏览器直接向服务器发送请求,协商对比服务端和本地的资源,验证本地资源是否失效。
强制缓存和协商缓存的关系
强制缓存和协商缓存命中缓存资源后,都是从本地读取资源。如果强制缓存生效,则不需要再向服务器发出请求;而协商缓存,不管是否使用缓存,必须向服务器发送一个请求来协商。
两类缓存规则可以同时存在,强制缓存优先级高于协商缓存,也就是说,当执行强制缓存的规则时,如果缓存生效,直接使用缓存,不再执行协商缓存规则。如果强制缓存规则不生效,则需要进行协商缓存判断。
三、缓存相关header
强制缓存
强制缓存的responseheader中会有两个字段来表明失效规则(Expires/Cache-Control)
协商缓存
协商缓存一般是使用if-modified-since/Last-Modified和if-none-match/Etag由服务器来决定浏览器缓存的资源是否可以使用。
1.Last-Modified/If-Modified-Since
Last-Modified:服务器响应请求时,告诉浏览器资源后的修改时间。
If-Modified-Since:浏览器再次请求资源时,浏览器通知服务器,上次请求时,返回的资源后修改时间。
若后修改时间小于等于If-Modified-Since,则responseheader返回304,告知浏览器继续使用所保存的cache。若大于If-Modified-Since,则说明资源被改动过,返回状态码200;
2.If-none-match/Etag
Etag:服务器响应请求时,告诉浏览器当前资源在浏览器的标识(生成规则由服务器确定)
If-None-Match:再次请求服务器时,通过此字段通知服务器客户端缓存数据的标识。服务器收到请求后发现有If-None-Match则与被请求资源的标识进行比对,不同,说明资源又被改动过,则响应整片资源内容,返回状态码200;相同,说明资源无新修改,则响应HTTP304,告知浏览器继续使用所保存的cache。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。