<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>缓存功能 :: NJET文档</title>
    <link>https://docs.njet.org.cn/docs/v4.0.1/reference/http/cache/index.html</link>
    <description>1. 功能描述 NJET会缓存来自代理 Web 或应用程序服务器的静态和动态内容，以加快向客户端的响应速度并减少上游服务器上的负载。启用缓存后，NjET将响应保存在NjET磁盘缓存中，并使用它们来响应客户端，而不必每次都对相同内容向上游服务器发起请请求。&#xA;2.使用介绍 2.1启用缓存 若要启用缓存，请在Http上下文中包含 proxy_cache_path指令。第一个参数是缓存内容的本地文件系统路径，第二个参数定义用于存储有关缓存项的元数据的共享内存区域的名称和大小。&#xA;http { # ... proxy_cache_path /data/njet/cache keys_zone=mycache:10m; } 然后在要缓存server响应的上下文（http、server或location）中包含proxy_cache指令，并指定由上述指令参数定义的共享内存区域名称。&#xA;http { # ... proxy_cache_path /data/njet/cache keys_zone=mycache:10m; server { proxy_cache mycache; location / { proxy_pass http://localhost:8000; } } } 请注意，参数定义的大小不会限制缓存响应数据的总量。缓存的响应本身与元数据的副本一起存储在文件系统上的特定文件中。要限制缓存的响应数据量，请将参数max_size 配置在 proxy_cache_path指令中。（但请注意，缓存的数据量可能会暂时超过此限制)。&#xA;2.2指定要缓存的请求 默认情况下，NJET会在第一次从代理服务器收到此类响应时缓存对使用HTTP GET和HEAD方法发出的请求的所有响应。NJET使用请求字符串作为请求的标识符。如果请求与缓存的响应具有相同的键，NJET会将缓存的响应发送到客户端。您可以在 http{} 、server{} 或location{}中包含各种指令，以控制缓存哪些响应。&#xA;要更改用于计算缓存文件标识，请使用proxy_cache_key指令。&#xA;proxy_cache_key &#34;$host$request_uri$cookie_user&#34;; 要定义在缓存响应之前必须发出具有相同键的请求的最小次数，请使用 proxy_cache_min_uses指令：&#xA;proxy_cache_min_uses 5; 要使用 GET和 HEAD以外的方法缓存对请求的响应，请使用 proxy_cache_methods指令并配置要缓存的方法。&#xA;proxy_cache_methods GET HEAD POST; 2.3 限制或禁用缓存 默认情况下，响应无限期地保留在缓存中。仅当缓存超过最大配置大小时，才会删除它们，然后按自上次请求它们以来的时间排序最长最少使用的缓存进行删除。您可以通过在http{} 、server{} 或location{}上下文中包含指令来设置缓存响应被视为有效的时间和是否使用缓存：&#xA;要限制具有特定状态代码的缓存响应被视为有效的时间，请使用 proxy_cache_valid 指令：&#xA;proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 在此示例中，包含代码200或302的响应被视为有效 10 分钟，包含代码的响应的有效期为 1 分钟。要定义具有所有状态代码的响应的有效期，请指定为第一个参数为any：</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Thu, 14 Aug 2025 14:50:41 +0800</lastBuildDate>
    <atom:link href="https://docs.njet.org.cn/docs/v4.0.1/reference/http/cache/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>cache 应用加速</title>
      <link>https://docs.njet.org.cn/docs/v4.0.1/reference/http/cache/cache_speed/index.html</link>
      <pubDate>Thu, 14 Aug 2025 14:50:41 +0800</pubDate>
      <guid>https://docs.njet.org.cn/docs/v4.0.1/reference/http/cache/cache_speed/index.html</guid>
      <description>1.功能描述 通常为了节省带宽、以及能够快速获取资源，在中间代理服务器上，通常会配置缓存。缓存机制的基本原理是将 Web 资源（如 HTML、CSS、JavaScript、图像等）保存在客户端或中间代理服务器上，以便在后续请求中直接使用该缓存副本，而不必重新获取资源。当客户端或代理服务器收到对资源的请求时，它们首先检查缓存，如果存在有效的缓存副本，就可以直接返回缓存的副本，从而避免了请求的发送和服务器端的处理过程。&#xA;但是上述的缓存机制仍然存在一定的问题，就是第一次访问资源是没有缓存的，所以肯定都是要跟服务器通信，然后去下载资源，如果带宽有限而且资源很大的情况（比如视频文件等），客户端就会长时间处于下载阶段，效率低下。针对这种情况，我们需要实现cache应用加速功能。&#xA;cache应用加速，由web管理员提前通过下发配置到代理服务器，由代理服务器提前下载资源并进行缓存，这样当客户端首次访问的时候也能够直接从缓存中获取资源，避免等待。&#xA;cache应用加速功能时序图如下: 2.依赖模块 load_module modules/njt_http_sendmsg_module.so; #依赖sendmsg模块 load_module modules/njt_http_cache_quick_module.so; #加载cache加速模块so 3.指令说明 需要http层配置proxy_cache_path（zone下面以cache作为示例） 需要http层配置map $purge_method （支持通过PURGE方法删除） proxy_cache_path /data/njet/cache levels=1:2 keys_zone=cache:10m purger=on max_size=20g inactive=30m; map $request_method $purge_method{ PURGE 1; default 0; } proxy_cache_path参数说明：&#xA;参数 说明 /data/njet/cache 缓存文件存放本地磁盘位置 levels=1:2 最多三级存放 keys_zone=cache:10m 缓存使用的共享内存名称以及大小 purger=on 是否支持purge清除 max_size=20g 最大 cache 空间 inactive=30m 缓存资源不活跃时间，超过该时间没被访问，该资源就会被清理 proxy_cache_valid 指令后面的时间表示最长缓存时间，在满足上面inactive时间内保持访问，也最多到这个最长缓存时间有效 4.配置样例 njet.conf&#xA;http { dyn_kv_conf conf/iot-work.conf; include mime.types; include conf.d/*.conf; proxy_cache_path /home/njet/test_cache/cache levels=1:2 keys_zone=cache_quick:10m purger=on max_size=20g inactive=1d; map $request_method $purge_method{ PURGE 1; default 0; } variables_hash_max_size 2048; #用于http cache加速测试 server { listen 80; server_name www.a.com; proxy_cache_valid any 1d; expires 1d; } #用于https cache加速测试 server { listen 443 ssl; proxy_cache_valid any 1h; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_certificate /etc/vsftpd/vsftpd.pem; ssl_certificate_key /etc/vsftpd/vsftpd.pem; } } njet_ctrl.conf</description>
    </item>
  </channel>
</rss>