快速加载的站点提供了更好的用户体验并且可以拥有更高的搜索引擎排名。通过 Nginx 缓存提高你的网站性能是一个有效的方法。Nginx 是一个流行的开源 web 服务器,也可以作为 web 服务器反向代理,负载平衡器和 HTTP 缓存。
Nginx 缓存的好处
(1) Improved load times
将频繁请求的内容存储在内存中,Nginx 缓存减少了加载页面所需的时间,这将为用户带来更快的浏览体验。
(2) Reduced server load
缓存减少了服务器必须处理的请求数量,从而释放了资源并降低了总体负载。
(3) Scalability
随着你的网站越来越受欢迎,缓存可以帮助管理不断增长的流量,而不需要额外的服务器资源。
(4) Enhanced SEO
更快的加载时间可以提高搜索引擎排名,使您的网站更容易被潜在用户发现。
Step 1: 安装 Nginx
首先,你需要在你的服务器上安装 Nginx。如果你还没有,请按照操作系统的官方安装指南。
Step 2: 配置 Nginx 缓存
安装 Nginx 后,需要编辑配置文件,通常位于 /etc/nginx/nginx.conf,在 http 块中添加以下行:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
这个指令使用的参数如下:
- /var/cache/nginx 缓存存储位置
- levels=1:2 缓存目录层级结构
- keys_zone=my_cache:10m 缓存区及其大小
- max_size=1g 最大缓存大小
- inactive=60m 未使用的缓存内容被删除的时间
- use_temp_path=off 禁止使用临时目录路径
Step 3: 将缓存添加到 Server Block
接下来,打开站点配置文件,通常位于 /etc/nginx/sites-available/your-domain.conf,找到 server 块,添加以下行:
proxy_cache my_cache;
proxy_cache_valid 200 30m;
proxy_cache_valid 404 1m;
add_header X-Proxy-Cache $upstream_cache_status;
这些指令通过以下设置为您的网站启用缓存:
- proxy_cache my_cache 使用前面定义的缓存区域
- proxy_cache_valid 200 30m 缓存成功响应 (HTTP 200) 30 分钟
- proxy_cache_valid 404 1m 缓存未找到响应(HTTP 404)1 分钟
- add_header X-Proxy-Cache $upstream_cache_status 添加一个头在响应中显示缓存状态
Step 4: 测试并重新加载 Nginx 配置
编辑完配置文件后,使用以下命令测试更改
sudo nginx -t
如果测试成功,重新加载 Nginx 以应用新的设置
sudo service nginx reload
Step 5: 监控和优化 Nginx 缓存
在设置缓存之后,必须监视其有效性并根据需要进行调整。检查网站的 X-Proxy-Cache HTTP 响应头 ,以确定内容是否从缓存中提供服务(HIT 状态),或者是否缓存错失(MISS或BYPASS 状态)
还可以查看 Nginx 日志,以了解更多缓存行为的详细信息。日志默认存放在 /var/log/nginx/ 目录下。
为了进一步优化缓存,可以考虑调整以下参数:
Cache duration
通过修改 proxy_cache_valid 指令,针对不同响应类型微调缓存持续时间。在缓存动态内容时要小心,因为过于激进的缓存可能导致提供过时的信息给用户。
Cache key
缓存 key 决定如何存储和检索缓存的内容。默认情况下,Nginx 使用请求 URI 作为缓存 key,你也可以通过添加 proxy_cache_key 指令来自定义。例如,可以在缓存 key 中包含请求方法和主机。
proxy_cache_key "$request_method$host$request_uri";
Cache locking
启用缓存锁定可以防止同时请求相同的未缓存内容,称为 thundering herd 问题。
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
Cache bypass
在某些情况下,您可能想要绕过特定请求的缓存。例如,针对已登录的用户不启用缓存。
proxy_cache_bypass $cookie_user;