给图片站加一层本地缓存代理,首屏快了一截
站点部署在海外小机器上,图片直接走源站 CDN,国内访问首屏经常被图片拖住。这次在 Nginx 里加了一层本地缓存代理:用 proxy_cache_path 单独划出 2GB 磁盘缓存区,键按图片 URI 取,缓存 30 天,回源时带上 If-Modified-Since,并把 Cache-Control 的 s-maxage 作为有效期判断依据。坑有两个:一是源站返回 Vary: Accept-Encoding 导致缓存命中率极低,改成按 gzip 与 br 分键后命中率回升;二是缓存目录权限不对,worker 进程写不进去,日志里报 permission denied,chown 后正常。上线后图片第二次访问基本命中本地,首屏明显改善,源站带宽也降下来了。结论是:小站做图片代理,本地缓存比堆 CDN 套餐更划算,但要先把缓存键和权限这两件事弄对。
站点部署在海外小机器上,图片直接走源站 CDN,国内访问首屏经常被图片拖住。这次在 Nginx 里加了一层本地缓存代理:用 proxy_cache_path 单独划出 2GB 磁盘缓存区,键按图片 URI 取,缓存 30 天,回源时带上 If-Modified-Since,并把 Cache-Control 的 s-maxage 作为有效期判断依据。坑有两个:一是源站返回 Vary: Accept-Encoding 导致缓存命中率极低,改成按 gzip 与 br 分键后命中率回升;二是缓存目录权限不对,worker 进程写不进去,日志里报 permission denied,chown 后正常。上线后图片第二次访问基本命中本地,首屏明显改善,源站带宽也降下来了。结论是:小站做图片代理,本地缓存比堆 CDN 套餐更划算,但要先把缓存键和权限这两件事弄对。