本文将介绍一些实用技巧,HTTP/2 协议下通过 Nginx 提升 WordPress 网站性能。虽然 HTTP/3 已经发布,但很多网站仍然使用 HTTP/2(依然是目前最主流的)。因为 HTTP/2 已经被广泛应用,并且经过了多年的验证,性能和稳定性都得到了保证。相比之下,HTTP/3 作为较新的技术,虽然有很大的潜力,但仍然在逐步完善和普及中。
1. 启用 HTTP/2
首先,确保已经启用了 HTTP/2。在 Nginx 配置文件中,可以在 server
块中添加 http2
参数来启用 HTTP/2:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/cert.key;
# 其他配置...
}
2. 调整并发流(Concurrent Streams)
HTTP/2 允许同时在一个连接中传输多个流。调整 http2_max_concurrent_streams 参数,可以增加并发流的数量:
http {
http2_max_concurrent_streams 128;
}
3. 配置优先级和依赖(Prioritization and Dependencies)
虽然 Nginx 目前对 HTTP/2 的优先级支持有限,但可以通过合理配置资源加载顺序来优化性能。
4. 压缩和缓存
确保启用了 Gzip 压缩或Brotli 压缩和合理的缓存策略,以减少传输的数据量和提高响应速度。
确实,无论是采用 Gzip 还是 Brotli 进行压缩,选择合适的压缩级别都是一个权衡的过程。较高的压缩级别虽然能显著减小输出文件的大小,从而在传输时节约带宽和流量,但同时也会增加压缩过程中的计算时间,导致服务器CPU负载加重。因此,在配置压缩策略时,应根据实际需求和资源限制,寻找压缩效率与执行速度之间的最佳平衡点。这通常意味着在极致的压缩比和可接受的性能影响之间做出合理的选择。
通常情况下, Gzip 或 Brotli 压缩等级建议设置成 4 或5 级。
http {
gzip on; #启用Gzip
gzip_comp_level 5;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/json image/jpeg image/gif image/png font/ttf font/otf image/svg+xml application/xml+rss text/x-js;
# 其他 gzip 配置...
brotli on; #启用brotli
brotli_comp_level 5;
brotli_buffers 16 8k;
brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp application/vnd.api+json;
# 其他 Brotli 配置...
}
server {
location ~ .*\.(js|css|webp|avif|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|mp4)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
access_log /dev/null;
}
}
5. 减少 TLS 开销
停用 TLSv1.0 与 TLSv1.1 ,改用现代的 TLS 配置,以减少握手时间和提高安全性。
server {
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
# 启用 OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
# 其他 SSL 配置...
}
6. 使用 HTTP/2 Push
HTTP/2 Push 可以在客户端请求之前发送资源,提高页面加载速度。
location ~* \.(html)$ {
http2_push /style.css;
http2_push /script.js;
try_files $uri $uri/ /index.php?$args;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
这部分可以将 WordPress 站点中每个页面都需要加载的 css 与 js 添加到 Push 清单中,注意正确的路径(绝对路径)与文件名。
7. 监控和调优
定期监控 Nginx 的性能,使用工具如 nginx_status
或 Grafana
,根据流量和性能数据不断调整配置。
server {
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
通过这些优化技巧,可以显著提升 Nginx 在 HTTP/2 下的性能,提供更快的响应和更好的用户体验。
暂无评论内容