对于以静态内容为主的网站来说,合理配置 Nginx 的静态文件缓存能够极大提升性能和响应速度。下面介绍几种常用的静态文件缓存技巧,帮助你优化 Nginx 配置。
1. 开启 Nginx 内置缓存
Nginx 自身就具备强大的静态文件缓存能力。默认情况下,静态文件会被缓存在操作系统页面缓存中,可以通过调整相关设置进一步优化。
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
# 减少延迟
fastcgi_read_timeout 600;
send_timeout 600;
keepalive_timeout 600;
}
2. 使用 proxy_cache 与 proxy_cache_path
对于动态请求的缓存,可以使用 proxy_cache 功能。首先需要设定一个缓存路径:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
# 启用缓存区
proxy_cache my_cache;
# 控制缓存有效期
proxy_cache_valid 200 302 60m;
proxy_cache_valid any 1m;
# 避免缓存 cookie 及某些头部
proxy_ignore_headers Set-Cookie;
}
3. 设置正确的缓存控制头
让浏览器缓存静态文件可以极大地减少带宽消耗和加速页面加载。在 Nginx 配置中设置正确的 Cache-Control 和 Expires 头:
server {
location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg)$ {
expires max;
add_header Cache-Control "public, max-age=31536000, immutable";
# 忽略带有某些请求头的缓存
proxy_no_cache $http_pragma $http_authorization;
}
}
这里的 expires max 和 Cache-Control 设置可以使浏览器长时间缓存文件。
4. gzip 压缩
启动gzip压缩可以减小文件大小,从而减少网络传输时间和带宽消耗。
http {
gzip on;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
5. 使用 open_file_cache
打开文件描述符缓存,可以避免频繁地查找磁盘上的文件描述符:
http {
open_file_cache max=5000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_tests 5;
}
以上配置意味着 Nginx 将维护一个最多 5000 个条目的缓存,每个条目至少每 30 秒检查一次,如果有两个以上的读操作,那么该文件描述符将被缓存起来。
6. 文件合并
如果可能,合并多个 CSS 或 JavaScript 文件可以减少 HTTP 请求的数量,这同样有助于性能的提升。
总之,通过对 Nginx 静态文件缓存的优化,可以大大提高网站的响应速度和整体性能。这些配置应该根据你的网站的具体需求进行调整,以达到最优效果。在调整这些设置之前,建议先评估当前系统的性能基线,然后对比调整后的结果,以确定哪些变更带来了真正的改善。