NGINX 内容缓存2024 年 8 月 29 日 | 4 分钟阅读 缓存是指在本地存储信息,以加速客户端(如 Web 服务器)之间的通信。缓存可以位于客户端、服务器端或两者。缓存对于提供静态或不经常更改的数据的重复请求很有用。 内容缓存位于客户端和源服务器之间,并保存其看到的所有内容的副本。如果客户端请求缓存已存储的内容,则它会直接返回该内容,而无需联系源服务器。 在 Nginx Plus 中,启用缓存后,Nginx Plus 会将响应保存在磁盘缓存中,并使用它们来响应客户端,而无需每次都代理对相同内容发出的请求。 启用响应缓存要启用缓存,请在顶级 http { } 上下文中添加 proxy_cache_path 指令。重要的、必需的第一个参数是用于缓存内容的本地文件系统路径,而必需的 keys_zone 参数指定用于存储有关缓存项目的元数据的共享内存区域的名称和大小。 之后,在我们要缓存服务器响应的上下文(协议类型、虚拟服务器或位置)中添加 proxy_cache 指令,指定由 proxy_cache_path 指令的 key_zone 参数定义的区域名称。 Nginx 中涉及的缓存流程缓存中涉及 Nginx 流程 缓存管理器定期激活以检查缓存的状态。如果缓存的大小超过了 proxy_cache_path 指令的 max_size 参数设置的限制,则缓存管理器会删除最近访问的数据。在缓存管理器激活之间的时间内,缓存数据可能会暂时超过限制。 缓存加载器仅在 NGINX 启动后运行一次。它将先前缓存的数据的元数据加载到共享内存区域。一次加载整个缓存可能会消耗足够的资源,从而在启动后的最初几分钟内降低 NGINX 的性能。为避免此问题,请通过将以下参数包含到 proxy_cache_path 指令中来配置缓存的迭代加载
让我们看一个例子, 在此示例中,迭代持续 300 毫秒,或加载了 200 个项目之前 指定要缓存的请求默认情况下,NGINX Plus 会缓存对使用 HTTP HEAD 和 HTTP GET 方法发出的请求的所有响应,这些响应首次从代理服务器接收到。作为请求的键,NGINX Plus 使用请求字符串。如果请求与缓存的响应具有相同的键或标识符,则 NGINX Plus 会将缓存的响应发送给客户端。我们可以在 http {}、server {} 或 location {} 上下文中添加各种指令来控制缓存哪些响应。 要更改用于计算标识符或键的请求特征,请包含 proxy_cache_key 指令 要定义在缓存响应之前,必须发出具有相同标识符的请求的最小次数,请包含 proxy_cache_min_uses 指令 要缓存对使用 HEAD 和 GET 以外的方法的请求的响应,请将它们与 HEAD 和 GET 一起列为 proxy_cache_methods 指令的参数 限制或禁用缓存默认情况下,响应将无限期地保留在缓存中。仅当缓存超过最大配置大小时,才会删除它们,然后按自上次请求以来经过的时间的顺序删除。您可以通过在 http {}、server {} 或 location {} 上下文中包含指令来设置缓存响应被视为有效的时间,甚至可以设置是否使用它们 要限制被视为有效的、具有特定状态代码的缓存响应的持续时间,请使用 proxy_cache_valid 指令 在此示例中,代码为 200 或 302 的响应被视为有效 10 分钟,代码为 404 的响应有效 1 分钟。要定义所有状态代码的响应的有效时间,请指定 any 作为第一个参数 要指定 NGINX Plus 不向客户端发送缓存响应的条件,请包含 proxy_cache_bypass 指令。每个参数定义一个条件,并由几个变量组成。如果至少一个参数不为空且不等于“0”(零),则 NGINX Plus 不会在缓存中查找响应,而是立即将请求转发到后端服务器。 要定义 NGINX Plus 根本不缓存响应的条件,请添加 proxy_no_cache 指令 下一主题NGINX 负载均衡 |
我们请求您订阅我们的新闻通讯以获取最新更新。