Apache不执行动态页面逻辑,而是将请求转发给后端解释器;优化重点在于减少往返、压缩响应、缓存结果和缩短连接生命周期,具体包括启用mod_deflate压缩文本内容、合理配置KeepAlive参数、使用mod_cache缓存动态响应,以及禁用冗余模块。

Apache 本身不执行动态页面逻辑(如 PHP、Python 脚本),它只是将请求转发给解释器或后端应用服务器。所谓“动态网页依赖加载性能”,实际是指 Apache 如何更高效地配合后端(如 PHP-FPM、mod_php、WSGI 应用等)处理动态请求,减少传输开销、连接延迟和重复计算。优化重点不在“加载依赖”,而在减少不必要的往返、压缩响应、缓存可复用结果、缩短连接生命周期。
启用 Gzip/Deflate 压缩输出
动态页面生成的 HTML、JSON、JS/CSS 响应体通常含大量文本,未压缩时体积大、传输慢。启用 mod_deflate 可在 Apache 层实时压缩,浏览器自动解压,无需修改后端代码。
- 确保模块已启用:
a2enmod deflate(Debian/Ubuntu)或检查LoadModule deflate_module是否启用 - 在虚拟主机或主配置中添加:
<IfModule mod_deflate.c> DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/html text/plain text/xml AddOutputFilterByType DEFLATE text/css application/javascript AddOutputFilterByType DEFLATE application/json application/xml </IfModule>
- 避免压缩已压缩内容(如图片、PDF),也建议排除旧版 IE 的兼容问题(可用
BrowserMatch控制)
合理设置 KeepAlive 连接复用
现代动态页面常需加载多个资源(CSS、JS、图标、AJAX 接口),每个资源默认触发一次 TCP 连接。开启 KeepAlive 后,单个连接可承载多次请求,显著降低握手延迟。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确认启用:
KeepAlive On - 调优关键参数(根据并发量与网络质量):
-
MaxKeepAliveRequests 100:单连接最多处理 100 个请求(避免长连接被滥用) -
KeepAliveTimeout 3–5:空闲连接保持 3–5 秒(太长易积压,太短失去复用价值)
-
- 注意:若前端已使用 CDN 或反向代理(如 Nginx),KeepAlive 应在代理层统一管理,Apache 后端可设为 Off
为动态内容启用服务端缓存(disk 或 memory)
并非所有动态页面都“实时必变”。例如用户仪表盘、文章详情页、API 返回数据,在数秒至数分钟内可接受缓存。Apache 的 mod_cache + mod_cache_disk 可缓存后端返回的完整 HTTP 响应(含状态码、头、正文)。
- 启用模块:
a2enmod cache cache_disk - 基础配置示例(放在虚拟主机内):
<IfModule mod_cache.c> CacheEnable disk / CacheRoot /var/cache/apache2/mod_cache_disk CacheDirLevels 2 CacheDirLength 1 CacheMaxExpire 300 # 最多缓存 5 分钟 CacheIgnoreHeaders Set-Cookie # 忽略 Set-Cookie,避免用户态污染 CacheIgnoreCacheControl Off # 尊重后端的 Cache-Control 指令 </IfModule>
- 搭配
mod_headers可精细控制哪些路径缓存(如只缓存/api/v1/posts,排除带 session 的用户接口)
精简模块与关闭冗余功能
Apache 加载的每个模块都占用内存并增加请求处理路径长度。动态页面依赖越少中间环节,响应越快。尤其要禁用与当前技术栈无关的模块。
- 列出已加载模块:
apache2ctl -M或httpd -M - 典型可禁用模块(除非明确需要):
-
mod_info、mod_status(监控类,生产环境建议关闭或限制访问) -
mod_autoindex(目录列表,安全与性能双损) -
mod_cgi(若用 PHP-FPM,无需 mod_php 或 CGI) -
mod_userdir、mod_ldap等非业务相关模块
-
- 禁用命令(Debian/Ubuntu):
a2dismod info status autoindex,然后重启 Apache


















