Note
Http 的缓存主要利用 header 里的Cache-control 和 ETag
1.Cache-control
1.1 Cache-control主要字段
● public
○ 指HTTP请求返回的资源在所经过的所有路径包括一些中间代理服务器以及发出这个请求的客户端浏览器都可以进行缓存
● private
○ 代表发起请求的浏览器才可以进行缓存
● no-cache
○ 指可以存缓存,但是每次使用都需要去服务端验证
● no-store
○ 本地和代理服务器都不允许去缓存
● no-transform
○ 不允许代理/缓存服务器转换文件格式
1.1.1 到期
● max-age=
○ 缓存到期时间
● s-maxage=
○ 代理服务器专用
● max-stale=
○ 指示客户机可以使用超出max-age时间的响应
1.1.2 重新验证
● must-revalidate
○ 设置了max-age的资源过期后必须到源服务端验证资源是否还可用
● proxy-revalidate
○ (缓存服务器用)设置了max-age的资源过期后必须到源服务端验证资源是否还可用
1.2 Etag
1.2.1 ETag资源标识码
即用来进行对比缓存,Etag 是服务端资源的一个标识码
当客户端发送第一次请求时服务端会下发当前请求资源的标识码 Etag,下次再请求时,客户端则会通过 header 里的 If-None-Match 将这个标识码 Etag 带上,服务端将客户端传来的 Etag 与最新的资源 Etag 做对比,如果一样,则表示资源没有更新,返回 304。