有关nginx expires在nginx缓存中的配置方法,合理配置expires可以减少很多服务器的请求,并介绍了nginx如何配置静态文件expires时间的方法等。
nginx expires页面缓存时间设置
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {
root /var/www/img/; expires 30d; }
控制图片等过期时间为30天,当然这个时间可以设置的更长。
location ~ \.(wma|wmv|asf|mp3|mmf|zip|rar|swf|flv)$ {
root /var/www/upload/; expires max; }
expires 指令可以控制 http 应答中的“ expires ”和“ cache-control ”的头标(起到控制页面缓存的作用)
默认值:off
epoch:指定“expires”的值为 1 january,1970,00:00:01 gmt expires使用了特定的时间,并且要求服务器和客户端的是中严格同步。
而cache-control是用max-age指令指定组件被缓存多久。 二、nginx如何配置静态文件expires时间 对于站点中不经常修改的静态内容(如图片,js,css),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。
以nginx服务器为例:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #过期时间为30天, #图片文件不怎么更新,过期可以设大一点, #如果频繁更新,则可以设置得小一点。 expires 30d; } location ~ .*\.(js|css)$ { expires 10d; }
【背景】:expires是web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。 【相关资料】1、cache-control策略cache-control与expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过cache-control的选择更多,设置更细致,如果同时设置的话,其优先级高于expires。 http协议头cache-control :值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age各个消息中的指令含义如下: public指示响应可被任何缓存区缓存。 private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。 last-modified/if-modified-since last-modified/if-modified-since要配合cache-control使用。 last-modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。 if-modified-since:当资源过期时(使用cache-control标识的max-age),发现资源具有last-modified声明,则再次向web服务器请求时带上头 if-modified-since,表示请求时间。web服务器收到请求后发现有头if-modified-since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),http 200;若最后修改时间较旧,说明资源无新修改,则响应http 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。 三、nginx expires浏览器本地缓存设置
expires
使用字段:http, server, location
可以指定一个正或负的时间值,expires头中的时间根据目前时间和指令中指定的时间的和来获得。
cache-control头的内容随预设的时间标识指定: 注意:expires仅仅适用于200, 204, 301, 302,和304应答
例如:
//对图片,flash文件在浏览器本地缓存30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } //对js,css文件在浏览器本地缓存1小时 location ~ .*\.(js|css)$ { expires 1h; } (责任编辑:IT) |