首页主机资讯LNMP在Ubuntu上的缓存策略

LNMP在Ubuntu上的缓存策略

时间2025-11-25 00:13:04发布访客分类主机资讯浏览988
导读:Ubuntu LNMP缓存策略与落地配置 一、分层缓存总体策略 建议采用自上而下的多层缓存:浏览器缓存 → Nginx 静态资源缓存/反向代理缓存 → PHP-FPM 的 FastCGI 缓存 → OPcache/APCu(字节码与用户态...

Ubuntu LNMP缓存策略与落地配置

一、分层缓存总体策略

  • 建议采用自上而下的多层缓存:浏览器缓存 → Nginx 静态资源缓存/反向代理缓存 → PHP-FPMFastCGI 缓存OPcache/APCu(字节码与用户态数据)→ Memcached(对象缓存)→ MySQL InnoDB 缓冲池(数据页缓存)。
  • 静态资源(如图片、CSS、JS)设置长期 Cache-Control/Expires,并通过 ETag/Last-Modified 支持协商缓存;动态内容按路径/参数/身份区分可缓存性,必要时使用 VaryCache-Control: private
  • 对可缓存的动态页面启用 FastCGI 缓存,对不可缓存或强个性化页面回退到 PHP 执行;在响应头加入 X-Proxy-Cache/X-Cache-Status 便于观测命中率。
  • 对象缓存(如页面片段、查询结果、会话)使用 Memcached;数据库层优先保障 InnoDB Buffer Pool 命中率。
  • 注意版本差异:如 PHP 7.4 的 OPcache 默认启用,而 PHP 8.x 通常已内置并默认开启,但仍建议显式配置关键参数。

二、Nginx缓存配置要点

  • 静态资源长期缓存(示例):
    • 在 server 或 http 块中针对静态后缀设置:
      • location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
        • expires 30d;
        • add_header Cache-Control “public, no-transform”;
      • }
  • 反向代理缓存(示例):
    • http {
      • proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    • }
    • server {
      • location / {
        • proxy_pass http://backend;
        • proxy_cache my_cache;
        • proxy_cache_valid 200 302 10m;
        • proxy_cache_valid 404 1m;
        • add_header X-Proxy-Cache $upstream_cache_status;
      • }
    • }
  • FastCGI 缓存(示例,用于 PHP 动态页):
    • http {
      • fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=php_cache:10m max_size=1g inactive=60m use_temp_path=off;
    • }
    • location ~ .php$ {
      • fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
      • fastcgi_cache php_cache;
      • fastcgi_cache_valid 200 302 10m;
      • fastcgi_cache_valid 404 1m;
      • include fastcgi_params;
      • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    • }
  • 目录与权限:确保 /var/cache/nginx 存在且 www-data 可写;变更后执行 sudo systemctl reload nginx。

三、PHP与对象缓存配置要点

  • OPcache(推荐值,编辑 FPM 的 php.ini,如 /etc/php/7.4/fpm/php.ini):
    • [opcache]
      • opcache.enable=1
      • opcache.memory_consumption=128
      • opcache.interned_strings_buffer=8
      • opcache.max_accelerated_files=4000
      • opcache.revalidate_freq=60
  • APCu(用户态数据缓存,适合页面片段/配置/计算结果):
    • sudo apt-get install php-apcu
    • [apcu]
      • extension=apcu.so
      • apcu.enable_cli=1
      • apcu.shm_size=32M
  • Memcached(对象缓存,示例):
    • sudo apt-get install memcached php-memcached
    • 启动服务:sudo systemctl start memcached
    • PHP 示例:
      • $mem = new Memcached(); $mem-> addServer(‘127.0.0.1’, 11211);
      • $mem-> set(‘k’,‘v’, 3600); // 缓存 1 小时
  • 注意:OPcache 默认启用于 PHP 7.4,而 PHP 8.x 通常已内置并默认开启,生产环境仍建议显式配置关键参数。

四、MySQL缓存配置要点

  • InnoDB 缓冲池(数据页缓存,强烈建议优先保障):
    • [mysqld]
      • innodb_buffer_pool_size=1G
      • innodb_buffer_pool_instances=8
  • 查询缓存(如仍使用 MySQL 5.7 且业务可接受):
    • [mysqld]
      • query_cache_type=1
      • query_cache_size=64M
      • query_cache_limit=2M
  • 提示:在 MySQL 8.0 中查询缓存已被移除,应重点优化 InnoDB Buffer Pool、合理设计索引与 SQL。

五、验证与运维建议

  • 验证与观测:
    • 在响应头查看 X-Proxy-Cache/X-Cache-Status,常见值为 HIT/MISS/EXPIRED/UPDATING/STALE;命中率提升通常体现在 TTFB 明显下降。
    • 静态资源确认 Cache-Control/ExpiresETag/Last-Modified 生效;动态页在命中时返回 HIT
  • 运维要点:
    • 变更配置后使用 sudo systemctl reload nginx 与 sudo systemctl restart php7.4-fpm 平滑生效。
    • 定期清理或重建缓存目录(如 /var/cache/nginx)以释放空间;监控缓存命中率、慢查询与连接数。
    • 对强个性化或含敏感信息的页面禁用或缩短缓存;必要时使用 VaryCache-Control: private 控制客户端与中间层缓存行为。

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


若转载请注明出处: LNMP在Ubuntu上的缓存策略
本文地址: https://pptw.com/jishu/755044.html
Ubuntu SSH如何管理多个用户 php-fpm日志级别怎么设置

游客 回复需填写必要信息