浏览器缓存

1:Last-Modified If-Modified-Since
请求时,在响应头中添加Last-Modified参数,Last-Modified表示为当前请求内容的最后修改时间。HTTP协议中规定使用的是GMTshijian ,既格林威治标准时间。下次同一请求时,在请求头中添加If-Modified-Since参数,如果判断请求没有改变,返回响应代码为
HTTP/1.1 304 Not Modified


2:ETag
ETag是HTTP/1.1以后才引入的,在响应头中添加ETag参数,对应值为根据一定算法计算得出的唯一字符串,http没有归档值的计算方式,可以对响应内容计算MD5值,在spring中提供一个filter:ShallowEtagHeaderFilter。但这种方式计算MD5值,并发大的时候,消耗cpu比较大。
下次请求时,在请求头中添加If-None-Match参数
request:
      
ETag: "34512342341234"

reponse:
      
If-None-Match: "34512342341234"


3:Expires
Expires格式类似Last-Modified,请求响应返回内容的绝对时间,如果内容在本地没有过期,浏览器直接使用本地缓存内容,不会向服务器发送请求。这是与Last-Modified最大的区别。
如果本地时间与服务器时间不一致,会影响到本地缓存有效期检查。

4:Cache-Control
与Expires类似,使用的是相对时间,不依赖本地时间,而影响到本地缓存有效期检查。响应格式:Cache-Control:max-age=<sencond>
Cache-Control和Expires可以同时使用,浏览器优先使用Cache-Control。

1,2需要向服务器发出请求判断是否使用缓存。
3,4直接通过本地信息判断是否使用缓存,不需要要向服务器发送请求。

你可能感兴趣的:(spring,算法,浏览器,cache)