ubuntu lamp缓存策略设置
导读:Ubuntu LAMP 缓存策略设置 一 总体思路与分层 建议按层次构建缓存: 浏览器与CDN层:通过 Cache-Control / Expires 控制可缓存资源;静态资源上 CDN。 Apache层:启用 mod_cache_di...
Ubuntu LAMP 缓存策略设置
一 总体思路与分层
- 建议按层次构建缓存:
- 浏览器与CDN层:通过 Cache-Control / Expires 控制可缓存资源;静态资源上 CDN。
- Apache层:启用 mod_cache_disk 做页面/对象缓存,配合 mod_expires / mod_headers 下发缓存策略。
- PHP层:启用 OPcache(字节码缓存),业务数据用 APCu / Redis / Memcached。
- 数据库层:MySQL 5.7.20 起已弃用查询缓存(8.0 移除),改用 InnoDB Buffer Pool 等机制;高读场景可用 Redis/Memcached 做结果缓存。
二 Apache HTTP 层缓存配置
- 启用模块与基础压缩
- 启用模块:a2enmod cache、a2enmod cache_disk、a2enmod expires、a2enmod headers、a2enmod 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>
- 建议仅缓存静态资源路径,例如对 /static/ 与 /assets/ 开启:
- 浏览器缓存与验证
- 下发强缓存与协商缓存:
< 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-Cookie、Authorization 或强个性化内容禁用或设置 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
