# 缓存

http 缓存机制是 web 性能优化的重要手段,其分为 强制缓存协商缓存

# 强制缓存


# 1、强制缓存是什么?

强制缓存是第一次请求服务器获取静态资源后,在缓存有效期内,不会再请求服务器,而是直接使用缓存的资源

强制缓存状态码全部是200,会显示 from memory cache(内存中读取),当页面关闭后内存被释放再次打开,会显示 from disk cache(硬盘中读取)。

# 2、有效期

有效期分为 HTTP 1.1HTTP 1.0 两个版本,HTTP 1.1 优先于 HTTP 1.0

HTTP 1.1 版本中,强制缓存使用 Cache-Control 标识,Cache-Control 有多个值:

  • no-store : 所有内容都不缓存,不使用强制缓存和协商缓存
  • no-cache : 不使用强制缓存,使用协商缓存
  • private : 响应消息的全部或部分是针对单个用户的,并且不得由共享高速缓存(例如代理服务器)进行高速缓存
  • public : 可以由共享高速缓存(例如代理服务器)进行高速缓存
  • max-age : 缓存内容将在多少秒后过期(单位:秒)

HTTP 1.0 版本中,强制缓存使用 Expires 标识,值是过期时间的时间戳。

# 协商缓存


# 1、协商缓存是什么?

协商缓存是第一次请求服务器获取静态资源后,之后每次再请求资源,服务器会拿到浏览器请求的标识和现有资源对比,如果未修改会返回给浏览器 304 状态;如果修改了会返回新的资源和标识。

# 2、资源标识

同样,资源标识也分为 HTTP 1.1HTTP 1.0 两个版本,HTTP 1.1 优先于 HTTP 1.0

HTTP 1.1 版本中,协商缓存通过服务器返回的 Etag 来设置标识,再次请求时浏览器会携带 If-None-Match 请求头将标识提供给服务器进行对比。

HTTP 1.0 版本中,协商缓存通过服务器返回的 Last-Modified 最后修改时间来设置标识,再次请求时浏览器会携带 If-Modified-Since 请求头将标识提供给服务器进行对比。

最后更新时间: 4/27/2021, 8:17:29 PM