网站首页 > 技术文章 正文
快速加载的站点提供了更好的用户体验并且可以拥有更高的搜索引擎排名。通过 Nginx 缓存提高你的网站性能是一个有效的方法。Nginx 是一个流行的开源 web 服务器,也可以作为 web 服务器反向代理,负载平衡器和 HTTP 缓存。
Nginx 缓存的好处
(1) Improved load times
将频繁请求的内容存储在内存中,Nginx 缓存减少了加载页面所需的时间,这将为用户带来更快的浏览体验。
(2) Reduced server load
缓存减少了服务器必须处理的请求数量,从而释放了资源并降低了总体负载。
(3) Scalability
随着你的网站越来越受欢迎,缓存可以帮助管理不断增长的流量,而不需要额外的服务器资源。
(4) Enhanced SEO
更快的加载时间可以提高搜索引擎排名,使您的网站更容易被潜在用户发现。
Step 1: 安装 Nginx
首先,你需要在你的服务器上安装 Nginx。如果你还没有,请按照操作系统的官方安装指南。
- Nginx Installation for Linux
- Nginx Installation for Windows
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;
我的开源项目
- course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 - github 仓库)
猜你喜欢
- 2025-10-19 SpringBoot反复读取Body失效?Wrapper缓存方案一次根治!
- 2025-10-19 今天聊聊 HTTP 缓存控制_http 缓存设置
- 2025-10-19 Nginx缓存实战:如何让性能飙升10倍!
- 2025-10-19 一次HTTP强缓存失效引发的浏览器缓存键深度探索
- 2025-10-19 深入解析 MyBatis 中的缓存机制_mybatis有几层缓存
- 2025-10-19 前端缓存破局:gulp-rev实现静态资源hash化全指南
- 2025-01-12 CDN+OpenResty 实现丝滑访问的登录态缓存站
- 2025-01-12 如何在Spring Boot中通过布隆过滤器防止缓存穿透问题?
- 2025-01-12 HTML5缓存机制浅析:移动端Web加载性能优化
- 2025-01-12 如何在 NGINX 中缓存内容
你 发表评论:
欢迎- 最近发表
-
- Python常用标准库(pickle序列化和JSON序列化)
- Linux json-c使用_linux解析json数据
- 源码推荐(03.04):微信支付的测试,Json数据解析
- 打开JSON文件的六种方法,总有一种适合你
- springmvc项目中接收Android提交json数据
- 一篇文章让你详细了解何为JSON_json到底是什么
- FlinkSQL处理复杂JSON的思路_flinksql解析json数组
- 超级好用的轻量级JSON处理命令jq_json使用教程
- .NET性能系列文章二:Newtonsoft.Json vs System.Text.Json
- 推荐几个开发必备的JSON工具_推荐几个开发必备的json工具
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)