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 阅读(2458) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(5)

随笔档案(57)

相册

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜