1.2 Http协议缓存机制
缓存机制示意图
Http缓存的常用字段
各字段简介:
Expires:Http1.0引入的字段,其值是一个绝对时间;
Cache-Control:http1.1引入的字段,主要用来增强Http的缓存控制功能,包括四个字段no-cache/max-age/if-only-cache/max-sale
- no-cache:即不使用缓存,每一次都向服务器请求数据;
- max-age:设置一个相对存活时间,即相对于上一次服务器记录的请求时间而言;
- if-only-cache: 即只是用缓存,不使用请求;
- max-stale:即在指定时间内使用缓存数据 ;
last-modified:即服务器记录的该数据的最近一次修改的时间;
ETag:即该数据文件的一个唯一编码,类似HashCode,用于和客户端的Etag进行比对,且Etag优先级高于last-modified,即服务器会优先比对客户端上传的Etag值;
作用场景:当服务器数据文件被修改(比如加了一行空格),但是内容相当于不改变(空行一般无实际意义)的情况,这种情况下不能仅靠last-modified字段来判断是否需要缓存;
Date:服务器当前的时间,是标准的格林威治时间;
If-Modified-Since: 即客户端需要上传该参数,该参数的内容为客户端上一次请求改数据时所获得的Response中的last-modified参数;
If-None-Match:即当客户端有Etag时,需要在If-None-Match中设置Tag的值
原理:服务器会将自身的Etag与客户端上传的If-None-Match的值比对,如果相同则将Response中的If-None-Match设置为false,代表数据未发生变化,客户端可以直接使用缓存,不同则将Response 中的If-None-Match设置为true,代表服务端数据发生变化,客户端需要解析Response下发的数据并更新缓存;
-------------------------------学海无涯-------------------------------------