注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

猎户陨石的天空

感悟自然、道法自然

 
 
 

日志

 
 
 
 

【教程】Mobile Atlas Creator 本地缓存管理-ZAX  

2013-08-15 17:03:31|  分类: GPS相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    有部分网友询问关于Mobile Atlas Creator(MOBAC)中缓存的策略,也就是当网上的地图更新的时候,本地的地图缓存是否会更新,以及怎样更新。

   这里,特对MOBAC中缓存的策略和设置做简单的说明:

1、开启和关闭本地缓存功能

    MOBAC的“设置”中的“本地缓存库”中,可以通过勾选“允许使用本地缓存...”,来开启MOBAC的本地缓存功能。(默认为开启)如图:

【教程】Mobile Atlas Creator 本地缓存管理-ZAX - chly63 - 猎户陨石的天空
 

    当“勾选”后,凡是查看和下载过的地图,都会存储在本地缓存中,下次需要时就可以(准确说是:可能)从本地磁盘进行读取,无须联网。
(在磁盘上,MOBAC缓存的存储位置为:MOBAC按照目录下名为“tilestore”的子目录)

2、有效/过期时间

    即使本地缓存已经存在的数据,MOBAC也不一定从本地读取,到底是从缓存读取,还是从网上下载,由2个因素决定:
    (i):有效/过期时间
    (ii):地图源缓存配置

    我们首先介绍有效/过期时间:
    MOBAC设置中的“图片块更新”中可以设置3个设置项:默认有效时间、最小、最大有效时间,如下图:

【教程】Mobile Atlas Creator 本地缓存管理-ZAX - chly63 - 猎户陨石的天空
 
    它们规则如下:
  ?当本地缓存图片不带有“过期时间”的附加信息时,则使用默认有效时间作为它的过期时间。
  ?当本地缓存图片带有“过期时间”的附加信息,但是过期时间小于“最小有效时间”,则使用“最小有效时间”作为过期时间。
  ?当本地缓存图片带有“过期时间”的附加信息,但是过期时间大于“最大有效时间”,则使用“最大有效时间”作为过期时间。
   上面逻辑保证了每个本地缓存的图片,都拥有一个“过期时间”,当根据当前时间和过期时间,判断出本地缓存没有过期,则直接读取缓存,否则,会继续考察“地图源缓存配置”。

3、地图源缓存配置

    在MOBAC自定义地图源中,无论是XML方式还是BeanShell脚本,都可以设置一个名为:<tileUpdate>的配置。
    当MOBAC认定一个本地缓存的数据已经过期时(见第2节的介绍),会通过tileUpdate里面设置的方法,向服务器求证:该数据是否有新的数据?(注意:求证过程只会产生非常少的数据流量)。如果服务器告诉它已经有新数据,则MOBAC从服务器下载该数据,并替换更新本地缓存;反之,MOBAC会继续使用该本地缓存。

    tileUpdate可以设置为5个不同值:
    IfNoneMatch、ETag、IfModifiedSince、LastModified、None
    其中:IfNoneMatch、ETag、IfModifiedSince、LastModified只是4种不同的“求证”方法,流程都是一样的,不过不同的服务器不一定全部都支持:有的服务器可能4种方法都支持,有的服务器可能只支持其中的1种,有的可能都不支持。在配置地图源的时候,您需要根据服务器的特征,选择它支持的任意一种即可。

    要支持IfNoneMatch、ETag,服务器返回图片时必须附带有ETag头信息,要支持IfModifiedSince、LastModified,服务器返回图片时必须附带有Last-Modified头信息,关于几个策略的详情请参考:Custom XML Map Sources

    如果设置为None,则表示不向服务器求证,在认定过期后,直接从服务器下载最新的。这种方法缺点就是下载的可能和本地缓存一模一样,即出现重复下载。

    下面小结一些结论:

    小结1:开启缓存后,本地缓存在“最小有效时间”以内,绝对不会从网上下载
    小结2:开启缓存后,如果地图源tileUpdate配置为None,则本地缓存在自身“过期时间”到达后,必然从网上下载
    小结3:开启缓存后,如果地图源tileUpdate配置不为None,即使本地缓存在自身“过期时间”到达后,只要服务器求证没有新数据,则仍然会使用本地缓存。

重要补充:
    补充1:以下内容基于 MOBAC 1.9.11,对于其它版本MOBAC,有可能稍有不同
    补充2:上面更新本地缓存的策略,是针对MOBAC的缓存,而不是已经打包好的离线地图文件,如果您希望离线地图文件也能同步更新,建议您在制作该离线地图文件的时候,使用“地图册配置”功能保存该地图的配置,在必要的时候(比如1个月后)载入该地图册配置重新下载,这时只要您没有删除过缓存,则所有下载都会从MOBAC本地缓存进行,并会联网求证每个数据有无新数据,从而动态更新。

附: 常见地图服务器服务基本信息:
(注意:过期时间是没有准确规律的,同一地图提供商,对不同时间、或不同地区的地图过期时间的设置可能随时变化,上面的信息仅供参考,便于大家有个感性的把握)
Google 道路:过期时间约9个月
Google 卫星: 过期时间1年,支持IfModifiedSince、LastModified
Nokia 道路: 立即过期,支持IfNoneMatch、ETag,
Nokia 卫星:过期时间1年,支持IfNoneMatch、ETag,
图吧地图:过期时间1天,支持IfModifiedSince、LastModified
  评论这张
 
阅读(913)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017