HTTP頭中有個expires參數,設置一個未來的時間,在這時間以前,瀏覽器會先從cache讀取,如果沒有再從服務器中讀取。對于像圖片,css,script等靜態內容,只需發一次http request就可,以后就可從cache中讀取,一方面提高了響應時間,也減少了http rquest的次數。
具體的格式如下: Expires = "Expires" ":" HTTP-date。
Example: Expires: Thu, 01 Dec 2010 16:00:00 GMT.
Expires有個缺點就是它只能設置絕對時間,這樣每當到達預設時間點后必須重設expires值。HTTP/1.1提供了一個新的參數cache-control可以設置相對時間。
Cache-Control:Max-age
Cache-Control使用max-age直接指定component能被緩存多長時間. 它定義了新的方式用秒為單位. 假如當前時間與上次返回時間差小于上次返回的max-age,那么瀏覽器使用緩存的版本。如果需要緩存10年,你可以這樣指定:
Cache-Control: max-age=315360000
PS: 如果同時設置了cache-control和expires,cache-control會覆蓋expires。
Apache中配置expires
Apache提供了mod_expires.so模塊,可以輕松的設置expires值,以下是配置的范例:
LoadModule expires_module modules/mod_expires.so
ExpiresActive On
ExpiresDefault "access plus 300 seconds" #默認300秒過期
<Directory "/myProject/webResources"> #文件所在目錄
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
ExpiresByType text/html "access plus 1 day" #設置cache時間為1天
ExpiresByType text/css "access plus 1 day"
ExpiresByType text/javascript "access plus 1 day"
ExpiresByType image/gif "access plus 1 day"
ExpiresByType image/jpg "access plus 1 day"
ExpiresByType image/png "access plus 1 day"
ExpiresByType application/x-shockwave-flash "access plus 1 day"
參考文檔:
1. http://kuppalli.wordpress.com/2009/07/14/apache-configuration-for-etags-gzip-and-expires-header/
2. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32
3. http://www.meichua.com/archives/168.html
posted on 2010-10-21 09:36
Aaron.Chu 閱讀(2467)
評論(0) 編輯 收藏