centos lamp如何使用缓存技术
导读:CentOS LAMP 缓存技术落地指南 一、整体思路与分层 建议按“由近到远”的顺序启用缓存:先加速脚本执行,再缓存数据库查询结果,最后处理全页与静态资源。 分层与要点: PHP 层:启用 OPcache(字节码缓存),减少解释与编译...
CentOS LAMP 缓存技术落地指南
一、整体思路与分层
- 建议按“由近到远”的顺序启用缓存:先加速脚本执行,再缓存数据库查询结果,最后处理全页与静态资源。
- 分层与要点:
- PHP 层:启用 OPcache(字节码缓存),减少解释与编译开销。
- 对象缓存:使用 Memcached/Redis 缓存数据库查询结果或页面片段,显著降低数据库压力。
- Web/应用层:Apache 启用 mod_cache/mod_expires 做全页或局部缓存;静态资源设置长期 Cache-Control/Expires。
- 数据库层:优化 MySQL/MariaDB(如 InnoDB Buffer Pool),减少慢查询与磁盘 IO。
- 系统层:合理利用 Page Cache,并按需调整内核参数(如 vm.swappiness、vm.dirty_ratio)。
二、快速落地步骤
-
PHP 层启用 OPcache
- 编辑 /etc/php.ini,开启并调优 OPcache(示例值可按内存与站点规模调整):
- zend_extension=opcache.so
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.interned_strings_buffer=8
- opcache.max_accelerated_files=4000
- opcache.revalidate_freq=60
- 重启 httpd:systemctl restart httpd
- 验证:phpinfo() 中应能看到 OPcache 模块与配置生效。
- 编辑 /etc/php.ini,开启并调优 OPcache(示例值可按内存与站点规模调整):
-
对象缓存 Memcached(适合通用 KV/会话/查询结果)
- 安装与启动:
- yum install -y memcached
- systemctl enable --now memcached
- 默认监听 11211 端口(可在 /etc/sysconfig/memcached 调整)
- PHP 启用扩展(两种常见扩展名,二选一或并存):
- yum install -y php-pecl-memcache 或 php-pecl-memcached
- 将 PHP 会话存入 Memcached(编辑 /etc/php.ini):
- session.save_handler = memcache
- session.save_path = “tcp://127.0.0.1:11211”
- 可选:用 memadmin 工具管理/验证缓存数据(部署到站点目录后访问对应路径)。
- 安装与启动:
-
对象缓存 Redis(适合复杂结构/更高吞吐与持久化)
- 安装与启动(示例为编译安装,也可用发行版仓库):
- 下载并编译 Redis,make PREFIX=/usr/local/redis install
- 复制配置文件并启动服务(建议配置为 systemd 服务)
- PHP 安装扩展:
- yum install -y php-pecl-redis
- 重启 httpd
- 连通性测试(/var/www/html/test.php):
- $redis = new Redis(); $redis-> connect(‘127.0.0.1’, 6379); echo $redis-> ping();
- 应用接入示例(以 Discuz 为例,修改配置文件指向 Redis 主机与端口):
- $_config[‘memory’][‘redis’][‘server’] = ‘172.25.0.200’;
- $_config[‘memory’][‘redis’][‘port’] = 6379;
- 高可用建议:部署 Redis 主从复制,必要时增加 哨兵 实现故障切换。
- 安装与启动(示例为编译安装,也可用发行版仓库):
-
Apache 层全页与静态资源缓存
- 启用模块:a2enmod cache cache_disk expires
- 示例(在 VirtualHost 或 .htaccess 中按需放置):
- 全页缓存(示例策略,按业务调整):
- CacheQuickHandler off
- CacheLock on
- CacheLockPath /tmp/mod_cache-lock
- CacheLockMaxAge 5
- CacheIgnoreHeaders Set-Cookie
- CacheIgnoreNoLastMod On
- CacheStoreNoStore On
- CacheDefaultExpire 600
- CacheMaxExpire 86400
- CacheIgnoreQueryString On
- 静态资源长缓存(示例):
- ExpiresActive On
- ExpiresByType image/jpg “access plus 1 month”
- ExpiresByType text/css “access plus 1 month”
- Header set Cache-Control “public, max-age=2592000”
- 全页缓存(示例策略,按业务调整):
- 注意:动态页面需结合 Cache-Control: private/no-cache 或在应用中设置 Vary/禁用缓存,避免用户隐私泄露与脏数据。
三、数据库层优化要点
- 合理设置 InnoDB Buffer Pool(建议为物理内存的 50%–80%),减少磁盘 IO,提高查询命中率。
- 适度使用查询缓存(query cache)于读多写少场景;对高并发写场景谨慎评估。
- 规范索引、拆分大表、优化慢查询,配合应用侧缓存(Redis/Memcached)降低数据库压力。
四、验证与运维
-
验证要点
- OPcache:phpinfo() 中查看 opcache.enable 与命中率等指标。
- Memcached:ss -lntp | grep 11211;用 telnet 127.0.0.1 11211 执行 set/get 测试;或用 memadmin 观察命中与条目。
- Redis:redis-cli ping 返回 PONG;应用侧读取/写入键值验证;主从环境在主库写入、从库读取核对一致性。
- Apache:curl -I 查看 Cache-Control/Expires 与 X-Cache(若启用 mod_cache_disk)等响应头;浏览器开发者工具 Network 面板核对缓存命中与过期时间。
-
运维与安全
- 为 Redis 设置访问密码(requirepass)、绑定内网地址或启用防火墙;生产环境建议 主从+哨兵 提高可用性。
- 为 Memcached 限制监听地址与并发连接数,避免暴露在公网。
- 缓存失效策略:对“写后失效/主动删除”敏感的数据,在应用更新时同步清理相关缓存键,避免脏读。
- 系统层监控内存与缓存:free -h、top、iostat;必要时调整 vm.swappiness、vm.dirty_ratio 等内核参数以平衡性能与稳定性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lamp如何使用缓存技术
本文地址: https://pptw.com/jishu/756611.html
