網站性能優化之Apache調整_負載集群教程
1. 開啟Keep-Alive
開啟Keep-Alive后,可以保證瀏覽器和服務器之間的連接持久存在,這樣如果同一個域名請求很多資源的情況下可以省去建立連接的時間和資源消耗。所 以對于靜態服務器來說,由于一個域名會請求N多資源,比較宜開啟Keep-Alive,但是對于動態服務器,不宜開啟Keep-Alive,因為這樣會造 成很多的空閑進程,浪費內存空間。
配置:
KeepAlive On #開啟KeepAlive
KeepAliveTimeout 5 #保持連接5秒
2. HTTP緩存設置
當直接在瀏覽器中輸入一個URL,或者點擊一個鏈接的時候,那么瀏覽器緩存就會起作用,如果緩存沒有過期,那么瀏覽器會從本地讀取資源,不會發起HTTP請求,如果緩存過期,那么瀏覽器會發起新的瀏覽器請求。按ctrl+F5,瀏覽器會情況本地緩存,重新請求資源。
Expires是HTTP/1.0的緩存頭, Cache-Control: max-age 是HTTP/1.1是用來進行HTTP緩存的頭。Expires指定了資源過期的絕對時間,GMT格式,Cache-Control: max-age指定了資源過期的相對時間,單位是秒。在支持HTTP/1.1的瀏覽器上,如果發送兩個頭,那么Cache-Control: max-age會覆蓋掉Expires;在支持HTTP/1.0的瀏覽器上,即使發送了兩個頭,但是只有Expires會起作用,所以為了兼容老的瀏覽 器,還是要同時發送這兩個頭。設置HTTP緩存,需要安裝expires_module,其會發送Expires和Cache-Control: max-age兩個HTTP頭。
配置:
ExpiresActive On
ExpiresByType application/x-javascript "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType application/x-javascript “access plus 30 days” 表示對js資源設置Expires和Cache-Control: max-age頭,其中Expires的值是以客戶端訪問資源的時間為基準的后30天,Cache-Control: max-age的值是3600x24x30秒。
ExpiresByType application/x-javascript “modification plus 30 days”和上面效果一樣,只是Expires的時間是以資源最后修改的時間作為計算的基準。
3. 開啟Gzip壓縮,并設置vary頭
Gzip會對文本資源進行壓縮,一般能節省40%的大小,二進制內容不需要開啟Gzip壓縮,因為這些文件是已經壓縮過的,如果再進行Gzip壓縮反而會 增加其大小。靜態資源一般都會在代理服務器上進行緩存,而有的瀏覽器支持Gzip,但是也有不支持Gzip的老舊瀏覽器,所以需要設置Vary: Accept-Encoding 頭,這個頭告訴代理緩存服務器要對資源緩存兩份,一份壓縮過的,一份沒有壓縮過,然后根據瀏覽器發送的Accept-Encoding頭來返回壓縮或者不 壓縮的內容。設置Gzip壓縮,需要安裝deflate_module。
配置:
#對js,html,xml,css,普通文本開啟Gzip壓縮
AddOutputFilterByType DEFLATE application/x-javascript text/html text/plain text/xml text/css
4. 關掉ETag
Last-Modified與ETag是同樣的功能,都是用來標識一個資源是否更改過,Last-Modified的值是資源的時間戳,如果按F5或者刷 新按鈕則If-Modified-Since頭會帶著時間戳發送到服務器,如果服務器上資源的最后修改時間<=這個時間,那么返回304 Not Modified,否則返回200 OK 以及新的資源;ETag的值是通過資源的信息(一般為inode,大小,時間戳)而計算出來的一個字符串,如果按F5或者刷新按鈕則If-None- Match頭會帶著這個值發送到服務器,服務器用這個值來和當前資源的值進行比對,如果相等,則返回304 Not Modified,否則返回200 OK 以及新的資源。默認情況下Apache對靜態資源會發送Last-Modified和ETage,但是由于ETage的計算會耗費服務器的CPU資源,所 以選擇關掉,只開啟Last-Modified。
配置:
FileETag None
Header unsets ETag
- 相關鏈接:
- 教程說明:
負載集群教程-網站性能優化之Apache調整。