独立的静态和动态内容
使用单独的服务器用于静态和动态内容。服务于动态内容的Apache进程将带来开销并膨胀到正在服务的内容的大小,从不减小大小。每个进程都会产生任何加载的PHP或Perl库的大小。一个6MB-30MB的进程大小[或10%的服务器内存]并不罕见,并成为服务静态内容的资源之腰。
为了更有效地使用系统存储器的,无论是使用mod_proxy的特定请求传递到另一个Apache服务器,或使用一个轻量级服务器来处理静态请求:
Nginx
lighttpd
Or use a front-end caching proxy such as Squid-Cache or Varnish-Cache
服务器处理静态内容在前面。
请注意,动态内容服务器和静态内容服务器之间的配置设置会有很大不同。 mod_deflate
通过使用mod_deflate将带宽减少75%并提高响应时间。
LoadModule deflate_module modules/mod_deflate.so
<Location />
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml application/x-javascript
</Location>
加载的模块
仅通过加载所需要的模块减少内存占用量。 有些人还建议通过构建DSO(动态共享对象)在所需模块中进行静态编译。非常糟糕的建议。每当模块的新版本或安全建议发布时,您都需要手动重新构建Apache,从而创建更多工作,构建更多相关头痛以及减少停机时间。
指定mod_expires
包括用于向设置特定内容的到期日期的能力指定mod_expires;利用由用户的浏览器/代理发送的'If-Modified-Since'头缓存控制。将节省带宽,并大幅加快您的网站[重复]访问者。
请注意,这也可以用mod_headers实现。
的KeepAlive
启用HTTP持久连接以改善延迟时间和显著降低服务器负载[原始负载的25%的情况并不少见。
prefork的MPM:
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 100
工人和WINNT的MPM:
KeepAlive On
KeepAliveTimeout 15
MaxKeepAliveRequests 100
随着prefork的MPM,建议设置 '保持活动' 到 '关'。否则,客户将在这段时间内完成整个流程。虽然根据我的经验,将'KeepAliveTimeout'值设置为非常低的值更有用[2秒似乎是理想值]。这对于工作者MPM [基于线程]或Windows [只有基于线程的winnt MPM]而言不是问题。
对于worker和winnt MPM,默认的15秒超时设置为保持连接为下一页请求打开;更好地处理从链接到链接的客户。检查日志以查看客户端在每个页面上保留多久,然后再转到另一个链接。适当设置值[不要设置高于60秒]。
符号链接
确保'选项+的FollowSymLinks -SymLinksIfOwnerMat CH' 被设为所有目录。否则,Apache将为每个文件名组件发出额外的系统调用,以证实文件名不是符号链接;和更多的系统调用来匹配所有者。
<Directory />
Options FollowSymLinks
</Directory>
的AllowOverride
设置默认 '设置AllowOverride无' 为你的文件系统。否则,对于给定路径转换的URL,Apache将尝试在给定路径的每个目录级别下检测.htaccess文件。
<Directory />
AllowOverride None
</Directory>
ExtendedStatus
如果包括mod_status的,确保指令 'ExtendedStatus' 设置为 '关闭'。否则,Apache会对每个请求发出几个额外的与时间相关的系统调用。
ExtendedStatus Off
Timeout
减少服务器在请求失败之前等待的时间。 超时45
Nginx不支持.htaccess,因为这个必须使用Apache,而且我需要最好的Apache配置 – ALMGHARI 2014-10-27 12:12:14