强缓存和协商缓存–终结篇

浏览器缓存是指浏览器在内陆磁盘对用户最近请求过的资源举行存储。通过缓存,可以削减浏览器与服务器的通讯次数,提升网站的性能。浏览器缓存分为强缓存和协商缓存。

强缓存

先容

浏览器在请求资源文件时,首先会判断是否掷中强缓存。凭据该资源缓存的header信息,依据expires和cache-control字段判断是否掷中强缓存,若掷中则直接从缓存中获取资源,返回状态码200,不再继续向服务器提议请求。

相关状态码

200

相关字段

Expries

该字段是http1.0时的规范,其值为一个绝对时间的GMT花样的时间字符串,如Wen, 18 Mar 2020 17:25:00 GMT,若是发送请求的时间在该值之前,则判断其掷中强缓存。

Cache-Control

http1.1时的规范,该字段有五个相关属性可设置:

max-age:其值为一个数字,示意若干秒,代表缓存的最大相对时间。如设置Cache-Control:max-age=500,则从资源最后一次从服务器获取的时间最先盘算,500秒之后过时。

pubilc:浏览器和代理服务器都可以对资源举行缓存。

privite:只有浏览器可以缓存,代理服务器不能缓存。

no-cache:无法使用强缓存,可以使用协商缓存。

no-store:所有缓存都无法使用。

【软件工程简答题作业】可行性分析

协商缓存

先容

浏览器若没用掷中强缓存,则会继续判断是否掷中协商缓存。若掷中协商缓存,则返回状态码304,代表资源已存在,直接从缓存中取资源,不再向浏览器提议请求;否则,则会重新向浏览器请求资源。

相关状态码

304

相关字段

Etag/If-None-Match

Etag是一个资源唯一标识符,当资源发生改变该标识符就会转变,它是一个hash编码值。当浏览器第一次接见某个资源时,返回的资源会带有一个Etag标识符,浏览器再次接见该资源时,请求头中会带有一个If-None-Match的字段,它的值就是上次返回的Etag的值。然后将If-None-Match与新的Etag举行校验看是否一致,若一致,若一致,则继续判断last-modefied是否一致;若不一致,则重新请求服务器资源。

Last-Modified/If-Modified-Since

Last-Modified是一个的GMT花样的时间字符串,示意资源最后修改时间。当浏览器第一次接见某个资源时,返回的资源会带有一个Last-Modified标识符,浏览器再次接见该资源时,请求头中会带有一个If-Modified-Since的字段,它的值就是上次返回的Last-Modified的值。然后将If-Modified-Since与新的Last-Modified举行校验看是否一致,则掷中协商缓存。

Etag和Last-Modified区别
  1. Etag要优于Last-Modified。Last-Modified的时间单元最小是秒,若是某个文件在1秒内改变了多次,那么他们的Last-Modified实在并没有体现出来修改,然则Etag每次都市改变确保了精度。
  2. 在性能上,Etag要逊于Last-Modified,究竟Last-Modified只需要纪录时间,而Etag需要服务器通过算法来盘算出一个hash值。
  3. 在优先级上,服务器校验优先思量Etag。

验证流程图

强缓存和协商缓存--终结篇

原创文章,作者:7h28新闻网,如若转载,请注明出处:https://www.7h28.com/archives/1604.html