首页主机资讯Ubuntu LNMP中如何使用缓存提高速度

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

时间2025-10-20 21:52:04发布访客分类主机资讯浏览1145
导读:Ubuntu LNMP环境中使用缓存提高速度的方法 在Ubuntu系统的LNMP(Linux+Nginx+MySQL+PHP)架构中,缓存是提升网站响应速度、降低服务器负载的核心手段。以下从Nginx代理缓存、PHP脚本缓存、MySQL数据...

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

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

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

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

  • 定义缓存路径与参数:在/etc/nginx/nginx.confhttp块中添加以下配置,指定缓存存储路径(/var/cache/nginx)、缓存区域名称(my_cache,大小10MB)、最大缓存容量(1GB)、缓存项未访问60分钟后清除等参数:
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    
    
  • 启用代理缓存:在serverlocation块中,通过proxy_cache指令关联缓存区域,proxy_cache_valid设置不同响应状态码的有效期(如200/302状态码缓存10分钟,404状态码缓存1分钟),并通过add_header添加X-Proxy-Cache头用于验证缓存是否命中:
    server {
        
        listen 80;
        
        server_name example.com;
    
        location / {
        
            proxy_pass http://backend;
         # 关联后端(如PHP-FPM)
            proxy_cache my_cache;
        
            proxy_cache_valid 200 302 10m;
        
            proxy_cache_valid 404 1m;
        
            add_header X-Proxy-Cache $upstream_cache_status;
     # 显示缓存状态(HIT/MISS/BYPASS)
        }
    
    }
    
    
  • 可选:清除缓存:若需手动清除特定缓存,可添加purge location块(需安装ngx_cache_purge模块),通过访问http://example.com/purge/path/to/file清除对应路径的缓存。

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

  • 安装扩展:Ubuntu系统中,默认PHP包已包含OPcache,无需额外安装。若未启用,可通过以下命令安装:
    sudo apt install php-opcache  # 根据PHP版本调整(如php7.4-opcache、php8.1-opcache)
    
  • 配置OPcache:编辑PHP-FPM配置文件(/etc/php/7.x/fpm/php.ini7.x为具体版本),启用OPcache并调整参数:
    [opcache]
    zend_extension=opcache.so  # 启用扩展
    opcache.enable=1           # 开启OPcache
    opcache.memory_consumption=128  # 缓存内存大小(MB,根据服务器内存调整)
    opcache.interned_strings_buffer=8  # 内部字符串缓冲区大小
    opcache.max_accelerated_files=4000  # 最大加速文件数量(需覆盖项目文件总数)
    opcache.revalidate_freq=60  # 脚本文件检查更新频率(秒)
    opcache.fast_shutdown=1     # 快速关闭(提升性能)
    
  • 重启PHP-FPM:配置生效后,重启PHP-FPM服务:
    sudo systemctl restart php7.x-fpm
    
  • 验证配置:创建info.php文件(< ?php phpinfo(); ?> ),访问该文件并搜索“opcache”,确认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()存储数据)。

四、其他优化技巧

  • CDN加速:将静态资源(图片、CSS、JS)上传至CDN(内容分发网络),利用CDN的全球节点缓存资源,减少用户访问延迟。
  • 浏览器缓存:通过Nginx的expires指令设置浏览器缓存,提升重复访问速度(如上述静态资源缓存配置)。
  • 应用层缓存:在应用程序中实现自定义缓存(如使用APCu扩展缓存数组、对象),适用于需要快速访问的小数据。

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu LNMP中如何使用缓存提高速度
本文地址: https://pptw.com/jishu/730517.html
LNMP在Ubuntu上如何进行负载均衡 Linux PHP-FPM进程数如何设置合理

游客 回复需填写必要信息