1. Expires和Cache-Control: max-age比较
Expires: 过期时间 (从1970年算起,毫秒为单位)
resp.setDateHeader("Expires",System.currentTimeMillis()+30000);// 设置缓存有效期,30秒后缓存失效
Cache-Control: max-age=60(从当前时间算,以秒为单位)
resp.setHeader("Cache-Control", "max-age=60"); //设置缓存有效时间,60秒后缓存失效
HTTP/1.0 时使用 Expires 控制缓存有效时间,到了HTTP/1.1 ,使用Cache-Control:max-age 设置,HTTP/1.1 兼容HTTP/1.0
当只设置Expires 时,按Expires算;
当同时设置Expires 、Cache-Control:max-age时,Cache-Control:max-age优先级高
2. cache-control: max-age取值
max-age>0 时 直接从浏览器缓存中 提取
max-age<=0 时 向server 发送http 请求确认 ,该资源是否有修改
有的话 返回200 ,无的话 返回304.
3. cache-control 取值为 no-cache 和 max-age=0的区别
当页面设置 <meta http-equiv="cache-control" content="no-cache">
时,每次请求该页面必须重新从服务器中获得数据,请求头不会包含 If-Modified-Since 字段,服务器不会返回304,服务器必须返回200,并携带响应内容
当页面设置 <meta http-equiv="cache-control" content="max-age=0">
, 请求该页面时可能会携带 If-Modified-Since 字段, 服务器可能会返回 304,也可能返回200