HTTP缓存字段理解
HTTP字段理解
1.Expires:
该字段的http1.0时的规范,值为一个绝对时间的GMT格式的时间字符串,代表缓存资源的过期时间,在这个时点之前即命中缓存。
缺点:服务器返回的时间,可能与客户有时间差,时间差太大时可能会千万缓存混乱。
2.Cache-Control:
该字段为http1.1时的规范,Cache-Control:max-age=3600为1小时。工作原理和expires一样,两个字段同时使用时,以cache-control为准。
3.协商缓存:
继续保持上文,当cache-control没有命中,chrome会向服务器发送请求,服务器会验证协商缓存是否命中,如果协商缓存命中,请求返回http304 Not Modified.
协商缓存利用Last-Modified,If-Modified-Since和ETag,if-None-Match这两对头部来管理。
3.1.Last-Modified and If-Modified-Since
last-modified:为服务器的response字段。
if-modified-sine:为请求头部字段。
通过比较两个时间来判断资源在两次请求期间是否有过修改,如果没有修改,则命中协商缓存,在chrome从缓存中获得资源,如果有修改过则服务器返回资源,同时返回新的last-modified.
3.2.ETag and if-None-Match
a.有些情况判断日期是不够的。修改信息不重要,last-modified不能精确到秒。
b.ETag:为服务器字段。if-None-Match:为请求头部字段。
第一请求chrome缓存数据和头部Etag,第二次请求时,request会带上if-none-match为上次的etag值。命中则用缓存,否则返回新资源和ETAG。
注意:4个值一般同时启用,增加可靠性。分布式系统多台服务器的文件last-modified保持一致。分布式系统尽量关闭Etag,每台机器生成的Etag会不一样。
- CSRF简单理解---HTTP Referer字段验证(Java实现)
- HTTP中缓存相关的字段(Cache-Control, Expires, Last-Modified, ETag)介绍
- 理解HTTP/304响应(HTTP原理中的缓存机制)
- 理解ASP.NET与客户端缓存之HTTP协议
- HTTP缓存字段总结
- 后端程序员也需要理解的HTTP缓存
- ASP.NET与客户端缓存之HTTP协议的理解
- http中有关缓存相关的几个字段
- 深入理解 ASP.NET 与客户端缓存 (Part 1 - HTTP 协议)
- 理解HTTP缓存
- http中有关缓存相关的几个字段
- 深入理解 ASP.NET 与客户端缓存 (Part 1 - HTTP 协议)
- HTTP中与缓存有关请求头,响应头字段
- 彻底理解浏览器的缓存机制(http缓存机制)
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- http中有关缓存相关的几个字段
- 关于http缓存的理解
- (5A)HttpServletResponse:getWriter和getOutputStream()、sendRedirect()、session(简单理解)、文件下载、页面缓存
- 学习笔记拾遗 (一)http 缓存字段
- 理解ASP.NET与客户端缓存之HTTP协议