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详细说明。