Apache性能優化

http://weizhifeng.net/high-performance-with-apache.htmljavascript

 

前言

Apache是世界上使用最普遍的WEB服務器,根據PageSpeed的規則,咱們能夠從KeepAlive,瀏覽器緩存,Gzip等方面對其進行些調整,從而提升網站性能。


開啓Keep-Alivecss

開啓Keep-Alive後,能夠保證瀏覽器和服務器之間的鏈接持久存在,這樣若是同一個域名請求不少資源的狀況下能夠省去創建鏈接的時間和資源消耗。因此對於靜態服務器來講,因爲一個域名會請求N多資源,比較宜開啓Keep-Alive,可是對於動態服務器,不宜開啓Keep-Alive,由於這樣會形成不少的空閒進程,浪費內存空間。 配置:

KeepAlive On #開啓KeepAlive
KeepAliveTimeout 5 #保持鏈接5秒


HTTP緩存設置html

當直接在瀏覽器中輸入一個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頭。配置以下:

<IfModule expires_module>
    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"
</IfModule>

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的時間是以資源最後修改的時間做爲計算的基準。


開啓Gzip壓縮,並設置vary頭java

Gzip會對文本資源進行壓縮,通常能節省40%的大小,二進制內容不須要開啓Gzip壓縮,由於這些文件是已經壓縮過的,若是再進行Gzip壓縮反而會增長其大小。靜態資源通常都會在代理服務器上進行緩存,而有的瀏覽器支持Gzip,可是也有不支持Gzip的老舊瀏覽器,因此須要設置Vary: Accept-Encoding 頭,這個頭告訴代理緩存服務器要對資源緩存兩份,一份壓縮過的,一份沒有壓縮過,而後根據瀏覽器發送的Accept-Encoding頭來返回壓縮或者不壓縮的內容。設置Gzip壓縮,須要安裝deflate_module。 配置以下:

<IfModule deflate_module>
    #對js,html,xml,css,普通文本開啓Gzip壓縮
    AddOutputFilterByType DEFLATE application/x-javascript text/html text/plain text/xml text/css
</IfModule>


關掉ETagnode

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 unset ETag

apache

相關文章
相關標籤/搜索