如何利用Apache配置优化网站速度
导读:Apache配置优化网站速度的可落地方案 一 核心网络与协议优化 启用压缩:使用 mod_deflate 对文本资源进行压缩,显著降低传输体积。<IfModule mod_deflate.c> AddOutputFil...
Apache配置优化网站速度的可落地方案
一 核心网络与协议优化
- 启用压缩:使用 mod_deflate 对文本资源进行压缩,显著降低传输体积。
< IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript # 可选:对体积很小的资源不压缩,减少CPU开销 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|gz|bz2|pdf)$ no-gzip dont-vary < /IfModule> - 启用持久连接:复用 TCP 连接,减少握手开销。
KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 - 启用 HTTP/2:多路复用、头部压缩,提升并发与首包速度(需 TLS)。
LoadModule http2_module modules/mod_http2.so # 在443虚拟主机中确保 SSLEngine on 后启用 H2 - 启用 SSL/TLS:现代浏览器在 HTTPS 下才能使用 HTTP/2,同时提升安全与性能表现。
LoadModule ssl_module modules/mod_ssl.so Listen 443 < VirtualHost *:443> SSLEngine on SSLCertificateFile /path/to/cert.crt SSLCertificateKeyFile /path/to/private.key SSLCertificateChainFile /path/to/chain.pem < /VirtualHost> - 使用 CDN:将静态资源分发至全球边缘节点,缩短用户与资源的网络距离。
二 缓存策略
- 浏览器缓存(强推荐):通过 mod_expires 设置资源过期时间,减少重复请求。
< IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType text/html "access plus 1 hour" < /IfModule> - 精细控制缓存头:对特定路径设置 Cache-Control。
< IfModule mod_headers.c> < Location "/static"> Header set Cache-Control "max-age=31536000, public" < /Location> < /IfModule> - 反向代理/网关缓存(可选):使用 mod_cache + mod_cache_disk 缓存后端响应,减轻源站压力。
< IfModule mod_cache.c> < IfModule mod_cache_disk.c> CacheEnable disk / CacheRoot "/var/cache/apache2/mod_cache_disk" CacheDirLevels 2 CacheDirLength 1 CacheDefaultExpire 3600 CacheIgnoreHeaders Set-Cookie < /IfModule> < /IfModule> - 静态文件句柄缓存(可选):对极少变更的静态文件使用 mod_file_cache 提升文件系统访问效率。
LoadModule file_cache_module modules/mod_file_cache.so CacheFile /var/www/html/index.html - 建议:静态资源设置较长缓存,并在发布时通过文件名加 hash 解决更新问题。
三 MPM并发与进程模型调优
- 选择高效 MPM:在支持并发的场景优先使用 event 或 worker;若使用 PHP-FPM 且需保持兼容性,prefork 仍是稳妥选项。
- 典型参数示例(需结合内存与压测微调):
- prefork(以 CentOS 7 常见默认为例)
< IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 < /IfModule> - worker
< IfModule mpm_worker_module> StartServers 5 MinSpareThreads 5 MaxSpareThreads 10 MaxRequestWorkers 250 MaxConnectionsPerChild 0 < /IfModule>
- prefork(以 CentOS 7 常见默认为例)
- 调整思路:在内存与 CPU 允许的前提下,提高并发处理能力;同时关注 MaxRequestWorkers/ServerLimit 与后端(如 PHP-FPM、数据库)承载能力,避免“放大”瓶颈。
四 日志、模块与系统层面优化
- 精简日志:降低日志级别与写入频率,减少磁盘 I/O。
LogLevel warn CustomLog logs/access_log common - 禁用不必要模块:减少内存占用与攻击面(如目录浏览)。
# LoadModule autoindex_module modules/mod_autoindex.so # LoadModule dir_module modules/mod_dir.so - 静态资源交付优化:启用 sendfile 零拷贝(确保操作系统与文件系统支持),减少用户态/内核态数据拷贝。
- 监控与压测:使用 ab(Apache Bench)、WebPageTest 或 mod_status 观察并发、耗时与命中率,持续迭代参数。
ab -n 1000 -c 100 https://your-site.com/ - 架构级加速:在源站前部署 Varnish/Nginx 作为反向代理缓存,或与 CDN 协同,进一步降低源站压力与网络时延。
五 快速检查清单与注意事项
- 确认模块加载:使用
apachectl -M | grep -E 'deflate|expires|headers|http2|ssl|cache|cache_disk',缺失则启用对应模块。 - 配置生效:修改后先
apachectl configtest校验,再systemctl restart httpd(或apache2)滚动重启。 - 避免常见误区:
- 已压缩资源(如 JPEG/PNG/GZIP/PDF)不必再压缩,使用
no-gzip dont-vary排除。 - 长 KeepAliveTimeout 会占用连接槽位,短 Timeout 可能频繁建连,需结合 RTT 与并发实测。
- 缓存策略需配合“文件名哈希/版本号”,避免用户端长期命中过期内容。
- 已压缩资源(如 JPEG/PNG/GZIP/PDF)不必再压缩,使用
- 安全与合规:启用 TLS 时正确配置证书链;对外服务仅开放 80/443,限制管理接口与目录浏览。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用Apache配置优化网站速度
本文地址: https://pptw.com/jishu/767303.html
