文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/nginx
在产品的迭代中,咱们完成了移动端瓦片缓存方案和服务端瓦片缓存方案。可是当咱们遇到旧产品不易升级,或正式运行项目没法马上进行产品更新时,咱们能够采用基于Nginx的缓存设置来实现第三方瓦片服务的瓦片缓存。最近在某24小时运行项目中,团队成员hwg针对性的作了Nginx配置的设置和实施,我这里作一个总结。缓存
这里给出网友已经作好的一张示意图:微信
其核心就是HIT检查,经过定义好的Key去缓存里获取,当没有获取到时则为MISS状态,而后进行服务转发,将获取的结果存入缓存。性能
相关配置的详细说明:测试
proxy_cache_path:缓存存放路径。若是路径带上/,则表示绝对路径。若是不带/,则表示相对路径。这里写的my_cache,则是相对路径。spa
levels : 设置缓存文件目录层次;若是全部的缓存放入一个文件夹,则影响效率。这里设置的是levels=1:2 ,表示两级目录;3d
key_zone : 在共享内存中设置一块存储区域来存放缓存的key和metadata(相似使用次数),这样nginx能够快速判断一个request是否命中或者未命中缓存,1m能够存储8000个key,10m能够存储80000个key;日志
max_size : 最大cache空间,若是不指定,会使用掉全部disk space,当达到配额后,会删除最少使用的cache文件;code
inactive : 未被访问文件在缓存中保留时间,本配置中若是60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件,默认为10分钟;“须要注意的是,inactive和expired配置项的含义是不一样的,expired只是缓存过时,但不会被删除,inactive是删除指定时间内未被访问的缓存文件”;blog
use_temp_path : 若是为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不一样文件系统中没必要要的拷贝;
proxy_cache :启用proxy cache,指定声明好的缓存区域key_zone;
proxy_cache_valid 200 206 304 301 302 10d; 含义为对httpcode为200\206等的缓存结果缓存10天;
proxy_cache_key $uri : 定义缓存惟一key,经过惟一key来进行hash存取;
proxy_no_cache和proxy_cache_bypass:当为0时表示缓存,不为0时表示不缓存。这里与匹配语句配合,当传入参数中包含指定规则时,才进行缓存。
对访问请求记录的日志路径,以及记录日志格式的定义。
第一次访问时,未命中:
可是此时产生了缓存文件(二级目录):
第二次访问时,命中:
查看日志,肯定性能提高:
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^