http缓存:存储与请求关联的响应,并将存储的响应复用与后续请求
http缓存的好处:
- 响应速度快
- 减轻服务器的压力
http缓存如何实现
- 扩展:http的头部分为:
- 请求头
- 响应头
- 通用头:即可以用在请求头,又可以用在响应头。比如Cache-Control
- 实体头:实体是指http报文想要传输的实际数据。比如上传文件时上传的文件,加载静态资源时的资源。实体报头可能同时存在于 HTTP 请求和响应信息中,实体报头既非请求或响应报头。
http缓存分类
按存储范围:私有缓存、共享缓存
私有缓存
存储在特定的客户端,比如浏览器。通过Cache-Control:private
共享缓存
存储在客户端和服务器之间。通过Cache-Control:public
浏览器的强制缓存和协商缓存
-
强缓存:
- 发起http请求时,直接从浏览器读取缓存,请求不必到达服务器。
- 如果缓存命中,http状态码为200 OK(from memory cache)和 200 OK(from disk cache)
-
协商缓存:
- 发起http请求时,要经过和服务器的协商,才可以使用浏览器的缓存
- 如果缓存命中,http状态码为304
-
如何判断浏览器的缓存是否直接可用?
- 查看是否有通用头Cache-Control
- 如果设置了Cache-Control:max-age=<seconds>,缓存的最大有效期
- 如果设置了Cache-Control:no-cache,表示每次都要使用协商缓存
- 如果设置了Cache-Control:no-store,表示不使用任何缓存
- 如果没有Cache-Control,查看是否有响应头Expires,看当前事情是否超过Expires设置的时间
- 查看是否有通用头Cache-Control
-
如何判断协商缓存是否命中?
网友评论