獨立的靜態和動態內容
使用單獨的服務器用於靜態和動態內容。服務於動態內容的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