首页主机资讯ubuntu lamp缓存策略设置

ubuntu lamp缓存策略设置

时间2025-11-24 22:34:04发布访客分类主机资讯浏览1151
导读:Ubuntu LAMP 缓存策略设置 一 总体思路与分层 建议按层次构建缓存: 浏览器与CDN层:通过 Cache-Control / Expires 控制可缓存资源;静态资源上 CDN。 Apache层:启用 mod_cache_di...

Ubuntu LAMP 缓存策略设置

一 总体思路与分层

  • 建议按层次构建缓存:
    1. 浏览器与CDN层:通过 Cache-Control / Expires 控制可缓存资源;静态资源上 CDN
    2. Apache层:启用 mod_cache_disk 做页面/对象缓存,配合 mod_expires / mod_headers 下发缓存策略。
    3. PHP层:启用 OPcache(字节码缓存),业务数据用 APCu / Redis / Memcached
    4. 数据库层:MySQL 5.7.20 起已弃用查询缓存(8.0 移除),改用 InnoDB Buffer Pool 等机制;高读场景可用 Redis/Memcached 做结果缓存。

二 Apache HTTP 层缓存配置

  • 启用模块与基础压缩
    • 启用模块:a2enmod cachea2enmod cache_diska2enmod expiresa2enmod headersa2enmod deflate
    • 开启压缩(减少传输体积):在站点或全局配置中加入
      AddOutputFilterByType DEFLATE text/html text/css application/javascript。
  • 磁盘缓存示例(放在 VirtualHost 或 apache2.conf 的 / 中)
    • 建议仅缓存静态资源路径,例如对 /static//assets/ 开启:
      <
          IfModule mod_cache.c>
          
        <
          IfModule mod_cache_disk.c>
          
          CacheRoot   /var/cache/apache2/mod_cache_disk
          CacheEnable disk /static/
          CacheEnable disk /assets/
          CacheDirLevels 2
          CacheDirLength 1
          CacheDefaultExpire 3600
          CacheMaxExpire 86400
          CacheMinExpire 600
        <
          /IfModule>
          
      <
          /IfModule>
          
      
  • 浏览器缓存与验证
    • 下发强缓存与协商缓存:
      <
          IfModule mod_expires.c>
          
        ExpiresActive On
        ExpiresByType text/css        "access plus 1 week"
        ExpiresByType application/javascript "access plus 1 week"
        ExpiresByType image/png       "access plus 1 month"
        ExpiresByType image/jpg       "access plus 1 month"
        ExpiresByType image/jpeg      "access plus 1 month"
        ExpiresByType image/gif       "access plus 1 month"
        ExpiresByType font/woff2      "access plus 1 year"
        ExpiresDefault "access plus 1 hour"
      <
          /IfModule>
          
      
      <
          IfModule mod_headers.c>
          
        Header always set Cache-Control "public, max-age=31536000, immutable" env=!NO_CACHE
        Header always set Cache-Control "no-store" env=NO_CACHE
      <
          /IfModule>
          
      
    • 注意:对含 Set-Cookie、面向用户隐私或频繁变动的内容设置 NO_CACHE 环境变量,避免误缓存。
  • 生效与验证
    • 重启:sudo systemctl restart apache2
    • 验证:curl -I https://your-domain/static/app.js 应看到 Cache-Control: max-age=…Expires: 头。

三 PHP 层缓存配置

  • OPcache(必开)
    • 安装:sudo apt install php-opcache
    • 建议配置(/etc/php/7.x/apache2/php.ini):
      [opcache]
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=10000
      opcache.revalidate_freq=60
      opcache.save_comments=1
      opcache.fast_shutdown=1
      
  • APCu(用户级对象缓存,适合框架/业务数据)
    • 安装:sudo apt install php-apcu
    • 建议配置:
      [apcu]
      apcu.enable=1
      apcu.shm_size=64M
      apcu.ttl=7200
      apcu.enable_cli=0   ;
           生产建议关闭 CLI,避免与 FPM 冲突
      
  • Redis / Memcached(外部对象缓存)
    • 安装与启用:
      • Redis:sudo apt install redis-server php-redis
      • Memcached:sudo apt install memcached php-memcached
    • 在应用(如 WordPress/WooCommerce、Laravel/Symfony)中配置使用 Redis/Memcached 作为缓存/会话后端。

四 MySQL 层缓存与内存优化

  • 查询缓存状态
    • MySQL 5.7.20 起弃用,MySQL 8.0 已移除;若仍使用 5.7,可临时评估但更推荐外部缓存。
  • InnoDB 缓冲池(读多写少场景收益显著)
    • 建议将可用内存的较大比例分配给 innodb_buffer_pool_size(例如 512M–数GB,视总内存与并发而定),减少磁盘 I/O。
  • MyISAM 键缓存(如仍使用 MyISAM)
    • 设置 key_buffer_size(例如 256M–512M),加速索引读取。
  • 连接与会话级缓冲
    • 合理设置 sort_buffer_size / read_buffer_size / read_rnd_buffer_size 等,避免过大导致并发时内存膨胀。
  • 高读负载替代方案
    • 使用 Redis/Memcached 做查询结果缓存、热点数据缓存,减轻数据库压力。

五 进阶与注意事项

  • 动态内容缓存策略
    • 仅对明确可缓存的页面/片段启用 mod_cache_disk;对含 Set-CookieAuthorization 或强个性化内容禁用或设置 Cache-Control: private, no-store
    • 缓存判定要点:常见实现仅对 GET 且返回码为 200/203/300/301/410 的响应进行缓存。
  • 反向代理层
    • 如需更高命中率与更低后端压力,可在 Apache 前部署 Varnish 作为 HTTP 加速器,缓存整页或片段。
  • 版本与兼容性
    • 确认 Ubuntu 版本PHP 版本,模块名与配置路径可能不同;变更后务必重载/重启服务并做回归测试。
  • 安全与观测
    • 避免缓存敏感信息;上线前用浏览器开发者工具与 curl -I 校验 Cache-Control / Expires;结合应用日志与监控观察命中率与错误率变化。

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


若转载请注明出处: ubuntu lamp缓存策略设置
本文地址: https://pptw.com/jishu/754945.html
如何优化Linux上的PHP性能 ubuntu lamp防火墙配置指南

游客 回复需填写必要信息