Apache静态资源优化核心是减少I/O与连接开销:启用KeepAlive(On/Timeout 3s/Max 100)、Gzip压缩文本类资源、选用event MPM并调优线程参数、禁用无关模块、关闭HostnameLookups、限制日志粒度。

Apache 处理静态资源(如 HTML、CSS、JS、图片)时,性能瓶颈通常不在代码逻辑,而在 I/O、内存分配、连接管理与系统限制上。优化目标是:减少响应延迟、提升并发能力、降低资源占用、避免重复传输。以下是关键且实用的优化方向:
启用并配置 KeepAlive 连接复用
HTTP/1.1 默认支持持久连接,但 Apache 默认未开启或参数保守。开启后,浏览器可复用 TCP 连接请求多个静态文件,大幅减少握手和连接开销。
- 编辑 /etc/httpd/conf/httpd.conf 或 /usr/local/httpd/conf/httpd.conf
- 确保以下参数合理设置:
- KeepAlive On
- MaxKeepAliveRequests 100(单连接最多服务 100 个请求,避免过长占用)
- KeepAliveTimeout 3(连接空闲 3 秒后关闭,平衡复用与资源释放)
- 重启服务:systemctl restart httpd 或 /usr/local/bin/apachectl graceful
启用 Gzip 压缩传输
静态文本类资源(HTML/CSS/JS)压缩率常达 60%–80%,显著减少带宽消耗和加载时间。
- 确认 mod_deflate 已加载(httpd -M | grep deflate)
- 在主配置或站点配置中添加:
<IfModule mod_deflate.c><br> AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json<br> DeflateCompressionLevel 6<br></IfModule>
- 注意:图片(JPEG/PNG)、字体、PDF 等二进制文件无需压缩,反而增加 CPU 开销
调整 MPM 模块与并发参数
MPM 决定 Apache 如何处理并发请求。Linux 下推荐使用 event(高并发、低内存)或 prefork(兼容旧模块、稳定性强),不建议 worker(部分模块线程不安全)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查看当前 MPM:httpd -l(输出含 event.c 或 prefork.c)
- 若需切换,需重新编译安装(运行时不可动态替换)
- 针对 event MPM,关键参数示例(写入 mpm_event.conf):
- ServerLimit 256
- MaxRequestWorkers 400(最大并发请求数,按内存估算:每个线程约 2–4MB)
- ThreadsPerChild 25
- MinSpareThreads 25;MaxSpareThreads 75
- 修改后必须重启服务才生效
禁用无关模块与日志精简
默认加载的模块越多,内存占用越高、启动越慢、潜在攻击面越大。静态站点无需 PHP、CGI、SSL(若未启用 HTTPS)、重写(除非有简单跳转)等模块。
- 列出已加载模块:httpd -M
- 注释掉不用的模块(如 mod_php7.c、mod_ssl.c、mod_rewrite.c),在 httpd.conf 中加 # 前缀
- 减少日志粒度(尤其访问日志):
- 将 CustomLog 改为仅记录错误或关闭:CustomLog /dev/null combined
- 或使用异步日志(BufferedLogs On)缓解 I/O 压力
配合系统层做基础加固
Apache 性能受 OS 限制直接影响,尤其在高并发场景:
- 增大文件描述符限制(/etc/security/limits.conf):
* soft nofile 65536<br>* hard nofile 65536
- 关闭 Apache 的 DNS 反向解析(避免请求卡在 hostname lookup):
HostnameLookups Off
- 确保 SELinux 上下文正确(如自定义 DocumentRoot):
semanage fcontext -a -t httpd_sys_content_t "/home/wwwroot(/.*)?"<br>restorecon -Rv /home/wwwroot
不复杂但容易忽略。真正影响静态资源性能的,往往不是“怎么配”,而是“哪些不该配”。


















