http

更新于

http缓存

强缓存

Cache-Control常用的几个值如下

  • public 可以被任何对象缓存

  • private 只能被浏览器缓存,不能被代理服务器缓存

  • no-store 不使用任何缓存

  • max-age=<seconds> 缓存最大时间,相对于请求时间

  • s-maxage=<seconds> public的时候,覆盖max-ageExpire

  • no-cache 协商缓存,需要给服务器进行验证

Expires 指定了资源过期时间。

如果在Cache-Control响应头设置了 “max-age” 或者 “s-max-age” 指令,那么 Expires 头会被忽略

协商缓存

Last-Modified

代表源头服务器认定的资源做出修改的日期及时间

需要配合If-Modified-Since

语法

Last-Modified: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT

协商缓存主要还是用etag 配合 if-none-match

有时候文件修改时间变了,但是,文件内容没变。使用last-modified配合if-modified-since的方式,会存在浪费带宽的情况

Etag是根据文件内容来生成的

配合If-None-Match 当且仅当服务器上没有任何资源的 ETag 属性值与这个首部中列出的相匹配的时候,服务器端才会返回所请求的资源,响应码为 200

参考

掘金