在nginx中使用expires设置资源过期时间


#Nginx#


2014-06-29

本站之前是使用nginx 1.1.19驱动的,现在使用的github提供的静态网页服务。在使用nginx时,遇到过这样一个问题:当更新文章后,在浏览器通过域名打开网站,显示的内容并没有更新。想要更新,需要强制刷新页面(一般快捷键是Ctrl+F5)。这个原因很简单,就是nginx默认的资源过期时间不太合适。于是,笔者对nginx的配置文件(/etc/nginx/site-available/default)做了些修改:

# letiantian.xyz
server {
	listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

	server_name letiantian.xyz;
	root /home/blog;

    location ~.*\.(ico|css|js|gif|jpe?g|png)$ {
        expires 2d;
    }

   	location / {
        index index.html index.htm;
        error_page 404 /error.html;
        expires  2h;
	}

}

博客中的网页、图片等资源存放在/home/blog目录中,以ico、css、js、gif、jpeg、jpg、png为后缀的资源会在2天(2d)后过期,其他资源会在2小时(2h)后过期。这就意味着如果某时刻获取了1.jpg这个资源,那么2小时候重新访问该资源时,会从服务器中重新获取资源,而非从缓存中去找。如果是2小时内重新访问,那么会使用本地缓存的资源。

expires的原理可以参考浏览器缓存详解:expires,cache-control,last-modified,etag详细说明


( 本文完 )