根据扩展名进行判断
nginx expires配置详解(配置在nginx.conf中的server模块中): …… server{ …… location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { root /var/www/static; expires 365d; 当用户访问网站URL结尾的文件扩展名为上述指定类型的图片时,设置缓存365天。 } location ~ .*\.(js|css)?$ { root /var/www/static; expires 30d; #当用户访问网站URL结尾的文件扩展名为js、css类型的元素时,设置缓存30天。 } ……
location ~ ^/ (images|javascript|js|css|flash|media|static)/ { expires 360d; }
单个文件添加expires功能范例
location ~(robots.txt){ expires 7d; #给robots.txt机器人文件设置过去时间,在设置的期间内不记录404错误日志。
break;}
Nginx expires功能缺点及解决方法
当网站被缓存的界面或数据更新了,此时用户端看到还是旧的已经缓存的内容,这样就会影响到用户体验,解决方法如下:
对于经常需要变动的图片等文件,可以缩短对象缓存时间。
当网站改版或更新时,可以在服务器将缓存的对象改名(代码程序)
对于网站的图片、附件,一般不会被用户直接修改,用户层面上的修改图片,实际上个是重新传到服务器,虽然内容一样,但是会产生一个新的图片名称。
网站改版升级会修改js、css等样式文件,若改版时对这些样式文件中的元素改了名,会使得前端的CDN及用户端需要重新缓存内容。