温馨提示×

Debian上LNMP的缓存机制详解

小樊
49
2025-09-05 00:58:32
栏目: 智能运维

Debian上LNMP(Linux+Nginx+MySQL+PHP)的缓存机制主要涉及Nginx缓存PHP缓存MySQL缓存,以下是具体说明:

一、Nginx缓存

用于缓存静态资源、动态响应,减少后端请求压力。

  • 类型与配置
    • 静态资源缓存:通过expires指令设置浏览器缓存时间,或proxy_cache缓存代理响应。
      location ~* \.(jpg|css|js)$ {  
          expires 30d;  
          proxy_cache my_static_cache;  
      }  
      
    • 动态内容缓存:使用proxy_cachefastcgi_cache缓存PHP动态页面,支持按URL、参数等维度缓存。
      proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:100m inactive=60m;  
      location /api/ {  
          proxy_cache my_cache;  
          proxy_cache_valid 200 10m;  
      }  
      
    • 缓存控制:通过proxy_cache_valid设置不同状态码的缓存时间,proxy_cache_lock防止缓存击穿。

二、PHP缓存

提升PHP脚本执行效率,减少重复编译开销。

  • OPcache
    • 缓存PHP字节码,避免每次请求重新解析脚本。
    • 配置参数:opcache.enable=1(启用)、opcache.memory_consumption=128(内存大小,单位MB)、opcache.revalidate_freq=60(缓存更新频率,单位秒)。
  • Memcached/Redis
    • 缓存数据库查询结果、用户会话等动态数据,支持分布式缓存。
    • 需安装扩展(如php-memcached)并在代码中调用。

三、MySQL缓存

优化数据库查询性能,减少磁盘I/O。

  • 查询缓存(Query Cache)
    • 缓存SELECT查询结果,仅适用于静态数据(不推荐用于频繁更新的场景)。
    • 配置参数:query_cache_type=1(启用)、query_cache_size=64M(缓存大小)。
    • 注意:MySQL 8.0已移除查询缓存,需通过其他方式(如Redis)替代。
  • InnoDB缓冲池(Buffer Pool)
    • 缓存数据和索引,提升读写效率,配置参数innodb_buffer_pool_size(建议设置为服务器内存的50%-70%)。

四、缓存优化建议

  1. 静态资源:优先使用Nginx静态缓存+浏览器缓存,设置长有效期(如30天)。
  2. 动态内容:对低频更新页面使用Nginx动态缓存,高频更新数据采用Redis缓存。
  3. 数据库:避免过度依赖查询缓存,优先通过索引优化和缓存层(如Redis)提升性能。
  4. 监控与维护:定期清理过期缓存(如Nginx的proxy_cache_purge),监控缓存命中率。

五、配置文件路径

  • Nginx:/etc/nginx/nginx.conf/etc/nginx/sites-available/default
  • PHP:/etc/php/7.x/fpm/php.ini(根据PHP版本调整)
  • MySQL:/etc/mysql/my.cnf

参考来源:[1,2,3,4,5,6,7,8,9,10,11,12,13,14]

0