Nginx缓存机制详解

纸上得来终觉浅,绝知此事要躬行。

Nginx 缓存作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。下面我们将介绍 Nginx 缓存配置的相关指令以及 http 缓存机制,以及 Nginx 缓存实践案例分析。

Nginx缓存机制详解 - 缓存示意图

1. Nginx 缓存示例

实例演示,缓存是怎么出现的,怎么查看!

当我们代开某个网站,如 baidu.com,我们可以看到 size 这一列有一些 js 标识为 disk cache,这里就是应用到了缓存。

Nginx缓存机制详解 - 缓存截图 Nginx缓存机制详解 - 缓存截图

2. HTTP 缓存机制

HTTP 的缓存流程如下图所示

  • 缓存,可以分为强制缓存和对比缓存。
Nginx缓存机制详解 - 浏览器缓存处理流程图

3. Nginx 强制缓存

介绍强制缓存是什么?以及可能造成这个原因的配置参数!

浏览器不会向服务器发送任何请求,直接从本地缓存中读取缓存数据并返回 200 状态码,如下图所示。如果缓存过期再找服务器,其过程如下:

Nginx缓存机制详解 - 强制缓存示意图 Nginx缓存机制详解 - 缓存截图

可以造成强制缓存的字段,有如下几个:

  • Expires
    • 位置: HTTP Response Header
    • 说明: Expires 是服务端返回的到期时间。如果下一次请求如果小于服务端返回的过期时间,则直接使用缓存数据。Expires 是 HTTP1.0 的东西,现在浏览器默认都是使用 HTTP1.1。而且由于该值是有服务端生成,而客户端的时间和服务端的时间有可能不一致,导致存在一定误差。所以 HTTP1.1 使用 Cache-Control 替代。