跳转到主要内容

HTTP 响应缓存(未实现)

说明当前版本的缓存配置为何不可用,以及可部署的替代方案

nps.conf 保留了 HTTP(S) 隧道的内存缓存配置:

http_cache=true
http_cache_length=100

http_cache_length 表示最多保留的缓存条目数,使用 LRU 淘汰;0 表示不限制条目数。修改后需要重启 NPS。

当前版本状态

当前版本不会填充可供后续请求命中的响应缓存。因此即使开启以上参数,也不能把它作为可用的静态文件缓存功能部署。

推荐方案

需要减少 NPC 链路流量时,在 NPS 的 HTTP 入口前部署 Nginx、Caddy、Varnish 或 CDN,并让它们按标准 HTTP 缓存语义处理 Cache-Control、Expires、Vary 和认证响应。例如 Nginx:

proxy_cache_path /var/cache/nginx/nps levels=1:2 keys_zone=nps_cache:10m max_size=1g inactive=60m;

server {
    listen 80;
    server_name static.example.com;

    location / {
        proxy_pass http://127.0.0.1:8010; # nps.conf 的 http_proxy_port
        proxy_set_header Host $host;
        proxy_cache nps_cache;
        proxy_cache_valid 200 10m;
        add_header X-Cache-Status $upstream_cache_status always;
    }
}

验证时连续请求同一静态资源,观察第二次是否返回 X-Cache-Status: HIT。不要缓存登录态、带 Authorization 的响应或包含用户隐私的动态内容,除非已经设计了正确的缓存键和绕过规则。