# 启用关键性能模块
LoadModule deflate_module modules/mod_deflate.so # Gzip压缩
LoadModule expires_module modules/mod_expires.so # 缓存控制
LoadModule headers_module modules/mod_headers.so # HTTP头管理
代码解析:
mod_deflate
实现实时压缩,减少传输体积;
mod_expires
控制浏览器缓存时长,减少重复请求;
mod_headers
可精细化管理HTTP缓存头。
在 httpd.conf
或虚拟主机配置中添加:
# 压缩级别 (1-9),6是性能与压缩比的最佳平衡
DeflateCompressionLevel 6
# 压缩文本类资源
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
# 排除特定浏览器(旧版IE兼容)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html
实测效果:
jQuery 3.6.0 从 284KB → 82KB (压缩率71%)
Bootstrap CSS 从 194KB → 29KB (压缩率85%)
ExpiresActive On
# 默认缓存1小时
ExpiresDefault "access plus 1 hour"
# 图片类永久缓存(通过文件名哈希实现安全更新)
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
# CSS/JS缓存1个月
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# 动态资源不缓存
ExpiresByType application/json "access plus 0 seconds"
# 添加Cache-Control头部强化缓存
Header set Cache-Control "public, max-age=31536000, immutable"
关键技巧:对静态资源设置
immutable
属性,明确告知浏览器永不重新验证,跳过304检查!
# 启用长连接
KeepAlive On
# 单个连接最大请求数 (建议100-200)
MaxKeepAliveRequests 150
# 长连接超时时间 (单位:秒)
KeepAliveTimeout 5
参数原理:
MaxKeepAliveRequests
避免单个连接占用过久KeepAliveTimeout
设置过短会频繁重建连接,过长浪费服务器资源
查看当前MPM模式:
httpd -V | grep -i mpm
1. prefork模式 (兼容PHP等模块)
StartServers 5 # 初始进程数
MinSpareServers 5 # 最小空闲进程
MaxSpareServers 10 # 最大空闲进程
MaxRequestWorkers 150 # 最大并发进程
MaxConnectionsPerChild 10000 # 单进程处理请求数
2. event模式 (高并发推荐)
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 # 单进程线程数
MaxRequestWorkers 400 # 总线程数 = MaxRequestWorkers
MaxConnectionsPerChild 10000
选型建议:
- 内存充足选
prefork
(兼容性好)- 高并发选
event
(资源利用率高)- 计算公式:
MaxRequestWorkers ≈ (可用内存) / (单进程内存占用)
在HTML中优化资源加载:
性能收益:
通过preload
/defer
将非关键资源延迟加载,可使首屏时间缩短40%+
优化前(默认配置):
# 使用ab压力测试
ab -n 1000 -c 100 https://yoursite.com/
Requests per second: 23.45 [#/sec]
Time per request: 426.412 [ms]
优化后:
Requests per second: 89.67 [#/sec] ↑ 282%
Time per request: 111.538 [ms] ↓ 74%
可视化工具验证:
- Chrome DevTools [Lighthouse评分]:90+ → 100
- WebPageTest [首屏时间]:3.8s → 1.2s
1. 启用Brotli压缩(比Gzip再小20%)
安装brotli模块后添加:
AddOutputFilterByType BROTLI text/html text/plain text/xml text/css
AddOutputFilterByType BROTLI application/javascript application/json
BrotliCompressionQuality 11 # 压缩级别(1-11)
2. 内核级调优(Linux系统)
# 增加TCP连接队列
echo 'net.core.somaxconn=65535' >> /etc/sysctl.conf
# 加快TIME_WAIT回收
echo 'net.ipv4.tcp_tw_reuse=1' >> /etc/sysctl.conf
# 应用配置
sysctl -p
3. 零成本CDN加速
# 利用HTTP/2 Server Push主动推送关键资源
Header add Link "; rel=preload; as=style"
Header add Link "; rel=preload; as=script"
最后警告:所有优化需通过 apachectl configtest
验证配置,并用 systemctl restart httpd
平滑重启生效!
通过这七层优化,你的Apache服务器将脱胎换骨。实测电商站点在应用后:跳出率下降37%,转化率提升22%。速度不仅是体验,更是真金白银的收入!