兼职制作网站开发,网页设计文献,网络软营销的案例,网上商城的主要功能强缓存和弱缓存的主要区别是主要区别在于缓存头携带的信息不同。 强缓存#xff1a;
浏览器发起请求#xff0c;查询浏览器的本地缓存#xff0c;如果找到资源#xff0c;则直接在浏览器中使用该资源。若是未找到#xff0c;或者资源已过期#xff0c;则浏览器缓存返回未…强缓存和弱缓存的主要区别是主要区别在于缓存头携带的信息不同。 强缓存
浏览器发起请求查询浏览器的本地缓存如果找到资源则直接在浏览器中使用该资源。若是未找到或者资源已过期则浏览器缓存返回未找到资源的信息浏览器重新发起服务器请求由服务器提供所需要的资源服务器返回请求的资源后浏览器将该资源存入浏览器的缓存中以提供下一次使用。 找到所需资源 未找到所需资源 弱缓存协商缓存
协商缓存是在强缓存失效后浏览器携带缓存标识向服务器发起请求由服务器根据缓存标识来决定是否使用缓存。 弱缓存生效 弱缓存失效 启发式缓存 在强缓存中了解到缓存有效期由Expires和Cache-Control中的max-age来决定的那么如果响应头中不存在这两个字段缓存的有效期怎么计算浏览器还会走强缓存吗这就是启发式缓存解决的问题。
当报头中没有用来确定强缓存时间的字段时浏览器会触发启发式缓存缓存有效期计算公式 (date - last-modified ) * 10%
取响应报头中 date 与 last-modified 值之差的百分之十作为缓存时间。 首部字段解析
强缓存
从上文中可以看出合理设置强缓存可以减少不必要的服务端请求提升网页打开速度。设置强缓存的奥秘就在于请求头和响应头中的首部字段一起来看一下和强缓存相关的首部字段吧。
Expires 首部字段是 HTTP/1.0 中定义缓存的字段其给出了缓存过期的绝对时间即在此时间之后响应资源过期。
Cache-Control 首部字段是 HTTP/1.1 中定义缓存的字段其用于控制缓存的行为可以组合使用多种指令多个指令之间可以通过 “,” 分隔常用的指令有max-age、s-maxage、public/private、no-cache/no store 等。
max-age 给出了缓存的相对时间单位为秒即获得响应之后多少秒后过期和Expires同时出现时max-age优先级更高。 s-maxage对公共缓存服务器生效表示该资源在公共服务器中缓存的相对时间。如果存在公共缓存服务器浏览器缓存失效后会先请求公共缓存服务器公共缓存服务器失效后会重新请求资源服务器更新公共缓存服务器中的资源然后返回给浏览器。 public表示可以被任何节点缓存包括客户端和公共缓存服务器。 private表示该资源只能被客户端浏览器缓存。 no-cache 表示客户端每次使用缓存资源前必须向服务器确认其有效性。 no-store 表示不缓存资源。
弱缓存
Last-Modified代表资源最后修改时间存在服务端返回的响应头。 If-Modified-Since存在客户端请求头值为上次存储的Last-Modified判断资源是否过期。 Etag 代表资源的唯一标识存在服务端返回的响应头Etag优先级高于Last-Modified。 if-None-Match 存在客户端请求头值为上次存储的Etag判断资源是否过期。