zoukankan      html  css  js  c++  java
  • 基于Nginx进行地图瓦片缓存的方案描述

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

    1. 背景

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

    2.Nginx的缓存策略

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

     

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

    3.实际项目详细配置

    3.1定义缓存配置

     

           相关配置的详细说明:

      proxy_cache_path:缓存存放路径。如果路径带上/,则表示绝对路径。如果不带/,则表示相对路径。这里写的my_cache,则是相对路径。

      levels : 设置缓存文件目录层次;如果所有的缓存放入一个文件夹,则影响效率。这里设置的是levels=1:2 ,表示两级目录;

        key_zone : 在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key;

      max_size : 最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件;

      inactive : 未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件,默认为10分钟;“需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件”;

      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为200206等的缓存结果缓存10天;

       proxy_cache_key $uri : 定义缓存唯一key,通过唯一key来进行hash存取;

            proxy_no_cache和proxy_cache_bypass:当为0时表示缓存,不为0时表示不缓存。这里与匹配语句配合,当传入参数中包含指定规则时,才进行缓存。

    3.3其他扩展配置

     

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

    4.结果测试

           第一次访问时,未命中:

     

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

     

      第二次访问时,命中:

     

           查看日志,确定性能提升:

     

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

                                                                                   如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                                         

  • 相关阅读:
    剑指offer5-用两个栈实现队列
    剑指offer4-重建二叉树
    剑指offer3-从尾到头打印链表
    MATLAB曲线拟合函数
    贪心算法训练(九)——Best Cow Line(字典序最小问题)
    贪心算法训练(八)——智力大冲浪(带期限和罚款的单位时间调度问题)
    贪心算法训练(七)——加工生产调度(流水作业调度问题)
    贪心算法训练(六)——喷水装置(区间覆盖问题)
    贪心算法训练(五)——种树(区间选点问题)
    贪心算法训练(四)——(HDU1050)Moving Tables
  • 原文地址:https://www.cnblogs.com/naaoveGIS/p/9410551.html
Copyright © 2011-2022 走看看