ubuntu

Ubuntu LNMP中如何使用缓存提高速度

小樊
41
2025-10-20 12:26:35
栏目: 智能运维

Ubuntu LNMP环境中使用缓存提高速度的方法
在Ubuntu系统的LNMP(Linux+Nginx+MySQL+PHP)架构中,缓存是提升网站响应速度、降低服务器负载的核心手段。以下从Nginx代理缓存、PHP脚本缓存、MySQL数据库缓存三个关键层面,结合具体配置步骤与优化技巧展开说明:

一、Nginx缓存:减少后端请求与静态资源加载时间

Nginx作为反向代理服务器,可通过代理缓存(Proxy Cache)缓存后端(PHP-FPM)的响应结果,避免重复请求;同时通过静态资源缓存减少客户端对静态文件的重复下载。

1. 代理缓存配置(针对动态内容)

2. 静态资源缓存(浏览器端)

对于图片、CSS、JavaScript等静态文件,通过expires指令设置浏览器缓存有效期,减少客户端对服务器的请求:

location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
    expires 30d; # 缓存30天
    add_header Cache-Control "public, no-transform";
}

二、PHP缓存:加速脚本执行

PHP脚本的编译与执行是动态网站的主要性能瓶颈,通过OPcache(PHP内置扩展)缓存脚本字节码,可避免每次请求都重新编译脚本。

1. 安装与启用OPcache

三、MySQL缓存:优化数据库查询性能

MySQL的缓存机制可减少磁盘I/O与重复查询,提升数据库响应速度。

1. InnoDB缓冲池(核心优化项)

InnoDB存储引擎的缓冲池(innodb_buffer_pool)用于缓存数据与索引页,减少磁盘读取。建议将其大小设置为服务器物理内存的60%-80%(如16GB内存可设置为10-12GB):

innodb_buffer_pool_size = 10G  # 根据服务器内存调整
innodb_buffer_pool_instances = 8  # 缓冲池实例数(提升并发性能)

2. 查询缓存(MySQL 8.0前适用)

MySQL 5.7及以下版本的查询缓存(query_cache)可缓存SELECT查询结果,但MySQL 8.0已移除该功能(因效率低、易引发锁争用)。若使用MySQL 5.7,可调整以下参数:

query_cache_type = 1  # 开启查询缓存(1=开启,0=关闭)
query_cache_size = 64M  # 缓存大小(根据查询量调整)
query_cache_limit = 2M  # 单个查询缓存最大大小

3. 替代方案:使用Redis/Memcached

对于高并发场景,建议使用Redis(内存数据库)替代MySQL查询缓存,缓存频繁访问的数据(如商品信息、用户会话)。需安装Redis并配置PHP扩展(php-redis),在应用程序中实现缓存逻辑(如通过Redis::get()获取缓存数据,Redis::set()存储数据)。

四、其他优化技巧

通过以上缓存策略的组合应用,可显著提升Ubuntu LNMP架构的网站性能,降低服务器负载。配置完成后,建议通过nginx -t测试配置语法,重启Nginx(sudo systemctl restart nginx)与PHP-FPM(sudo systemctl restart php7.x-fpm)使配置生效,并通过浏览器开发者工具(查看Network面板)或curl -I命令验证缓存是否命中。

0
看了该问题的人还看了