简事二三 之 http缓存机制

http缓存相关概念:nginx

请求头:浏览器向服务器发送请求的数据,资源web

响应头:服务器向浏览器相应数据,告诉浏览器我是谁,我要怎么作。如,我是nginx,给你的资源是正确的200 仍是错误的404,我告诉你须要缓存多久。浏览器

缓存优先级: pragma → cache-control → expires → ETag → last-modified缓存

Http1.0: Pragma(已废弃), expires服务器

Http1.1: Cache-control, ETag, Last-Modified加密

http缓存能够分为两类: 强制缓存,协商缓存代理

  1. 强制缓存:expires, Cache-control
    1). Expires: 缓存过时时间,GMT时间,以客户端时间做为参考
    2). Cache-control: 相对时间,属性值分为:
    1. Private:仅容许客户端缓存
    2. Public:客户端和代理服务器均可以缓存
    3. Max-age=xxx:缓存内容将于xxx秒后失效
    4. No-cache:须要使用协商缓存来验证缓存数据
    5. No-store:全部内容都不会缓存,强制缓存、协商缓存都不会触发

  2. 协商缓存:Last-Modified, ETag
    1)Last-Modified:定义上一次修改时间,再次请求时带请求头if-modified-since,与服务器进行对比
    2)ETag:加密字符串,再次请求时带请求头if-none-match,与服务器对比

对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求直接用缓存,不在时间内则执行协商缓存策略。cdn

对于协商策略,将缓存信息中的ETag和Last-Modified经过请求发送给服务器,有服务器校验,返回304状态码时,浏览器直接使用缓存。blog

浏览器第一次请求:资源

浏览器请求 -> 无缓存 -> 向web服务器请求 -> 请求响应,缓存协商 -> 呈现

浏览器再次请求:


常见的请求头:


常见的响应头:

相关文章
相关标签/搜索