expires是http头的一个属性,用于设定资源文件缓存的过期时间,这个属性不仅可以用于网页,还可以用于图片、css文件、js文件等资源文件。一个资源文件设置了expires过期时间并且在浏览器端缓存后,在过期时间前,浏览器再次访问该资源时不会再请求(连接)服务器(按F5强制刷新除外),直接使用浏览器上的本地缓存,哪怕服务器里的资源版本已经改变了。如果不设置expires,浏览器会请求(连接)服务器,判断本地缓存中的资源与服务器里的资源是否一样,如果一样,服务器返回304状态到浏览器,浏览器不再下载服务器的版本,直接使用本地缓存;如果不一样,浏览器会下载服务器上新的资源替换本地缓存中的旧资源。
如果一个网站静态资源很多,而且这些资源在较长一段时间内不会再改变,可以对这些资源设置expires属性,这样的话可以大量减少与服务器的连接数,可以减轻服务器的负担,同时也使得页面的加载速度有很大的提升,现在很多网站(著名的如网易、新浪等)的静态资源也设置了expires,其目的也就是这个。
我现在给博客里所有的静态资源设置了35天的缓存过期时间,设置后感觉页面的加载速度的确快了,我服务器前端使用的是nginx,nginx设置资源文件的expires挺简单的:
location ~*.(css|js|jpg|jpeg|gif|png|ico)$ {
root /www/soluo/blog;
expires 35d;
}
expire参数接受的值可以是:
expires 1 January, 1970, 00:00:01 GMT; //设定到具体的时间
expires 60s; //60秒
expires 30m; //30分钟
expires 24h; //24小时
expires 1d; //1天
expires max; //max表示过期时间为31 December 2037 23:59:59 GMT
expires off; //永远重新读取
实际设施中,可以根据网站的实际情况,对不同类型、不同目录下的资源文件各自设置过期时间。