基于Nginx进行地图瓦片缓存的方案描述

文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/nginx

1. 背景

       在产品的迭代中,咱们完成了移动端瓦片缓存方案和服务端瓦片缓存方案。可是当咱们遇到旧产品不易升级,或正式运行项目没法马上进行产品更新时,咱们能够采用基于Nginx的缓存设置来实现第三方瓦片服务的瓦片缓存。最近在某24小时运行项目中,团队成员hwg针对性的作了Nginx配置的设置和实施,我这里作一个总结。缓存

2.Nginx的缓存策略

       这里给出网友已经作好的一张示意图:微信

 

       其核心就是HIT检查,经过定义好的Key去缓存里获取,当没有获取到时则为MISS状态,而后进行服务转发,将获取的结果存入缓存。性能

3.实际项目详细配置

3.1定义缓存配置

 

       相关配置的详细说明:测试

  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,避免文件在不一样文件系统中没必要要的拷贝;

3.2 缓存使用

 

        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时表示不缓存。这里与匹配语句配合,当传入参数中包含指定规则时,才进行缓存。

3.3其余扩展配置

 

       对访问请求记录的日志路径,以及记录日志格式的定义。

4.结果测试

       第一次访问时,未命中:

 

      可是此时产生了缓存文件(二级目录):

 

  第二次访问时,命中:

 

       查看日志,肯定性能提高:

 

                                                                          -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                               若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                                     

相关文章
相关标签/搜索