动态更新 AGS Cache

简介:

提升ArcGIS Server访问速度最佳的方式是Cache,将所有图层切片保存在服务器,客户端请求时直接访问cache好的图片,这里分为两种情况,一是所有图层都做cache,二是部分图层做cache,部分图层仍通过ags服务生成,即multi_layer,它们可能会经常被更新(基于b/s浏览器端的更新,或在c/s客户端更新,或通过mobile无线移动的更新),这样做虽然可以从一定程度上解决访问速度问题,但在有些情况下,对地图的实时性要求不是非常高,或业务并不需要经常编辑部分图层,那么我们可以通过定时更新cache的方式,让客户端访问的总是已经cache好的地图,既保证客户端浏览速度最大化,又满足系统一定的实时性要求。

    我们知道,arctoolbox以及arccatalog都可以管理ags cache,那我们可以利用geoprocessing tool编写脚本,实现ags cache的生成、更新。这里需要注意两点:

    1.如果客户端要浏览实时数据,并且实时性要求非常高,不建议使用动态更新cache,multi_layer方式更好。
    2.如果cache特别大,并且全图的数据、符号经常改变,不建议使用动态更新cache,指定地图局部范围的更新更适合动态更新。

    对大数据量的图层做过cache的工程师知道,数据量越大、放大缩小分级越多,生成cache的时间呈指数上升,使用动态更新cache,就需要将更新的时间控制在一定的时间内,如果时间太长就没有意义了,甚至会影响应用。

    Python脚本编写比较简单:

#  This script updates all tiles in an ArcGIS Server 9.2 map cache

#  Access the geoprocessing tools
import arcgisscripting
gp = arcgisscripting.create()

#  Set up all of the variables for the update tool
server_name =  " myserver1 "
object_name =  " Precipitation "
data_frame =  " Layers "
layers =  ""
constraining_extent =  ""
scales =  " 32000000;16000000;8000000;4000000;2000000 "
update_mode =  " Recreate All Tiles "
thread_count =  " 2 "
antialiasing =  " NONE "

#  Run the Update Map Server Cache tool
try:
print  ' Starting Cache Update '
gp.UpdateMapServerCache(server_name, object_name, data_frame, layers, constraining_extent, scales, update_mode, thread_count, antialiasing)
print  ' Finished Cache Update '

#  Get the error messages if the tool fails
except:
gp.AddMessage(gp.GetMessages(2))
print gp.GetMessages(2)

    如果对python script控制arctoolbox不熟,建议看ArcGIS Desktop Help。

    更新的脚本已经写好了,最后是如何定时更新,这里要用到windows任务管理,这是windows非常普通的一个功能,但在实际中使用的很少,“开始--所有程序--附件--系统工具--任务计划”,创建一个新的任务,除此之外,还可以用命令行创建任务,schtasks命令:
    http://technet2.microsoft.com/windowsserver/en/library/1d284efa-9d11-46c2-a8ef-87b297c68d171033.mspx?mfr=true

    更新cache需要关注另外三个问题:

    1.更新过程两次重启ags服务,一次在更新之前,一次在更新完成后,重启过程服务将暂时不能使用。
    2.更新过程要消耗一定的实例,如果采用池化方式,应该注意thread_count小于maximun number of instances。
    3.更新尽量在夜晚网络低峰期。

本文转自Flyingis博客园博客,原文链接:http://www.cnblogs.com/flyingis/archive/2008/03/11/1100198.html,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 缓存 JavaScript
genius-storage使用文档,一个浏览器缓存工具
genius-storage使用文档,一个浏览器缓存工具
|
7月前
|
存储 缓存 前端开发
Web Server 设置缓存响应字段的一些推荐方案
Web Server 设置缓存响应字段的一些推荐方案
47 1
|
7月前
|
缓存 安全 PHP
SAP Gateway 后台模型的缓存设置
SAP Gateway 后台模型的缓存设置
47 0
|
缓存
SAP Gateway 后台模型的缓存设置(1)
SAP Gateway 后台模型的缓存设置
|
缓存 安全 PHP
SAP Gateway 后台模型的缓存设置(2)
SAP Gateway 后台模型的缓存设置
|
安全 数据可视化 测试技术
Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
# 0.引言 集群管理是ES的核心重点,因此相关的知识点至关重要,本期主要针对数据流、索引生命周期、可搜索快照、跨集群搜索、跨集群复制进行讲解
254 0
Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
|
JSON Prometheus Kubernetes
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
|
缓存 网络协议 开发工具
如何让App首屏启动更快 -- httpdns持久化缓存方案
httpdns作为解决域名劫持,调度不精准问题的一剂良药,很大程度上改善了app的用户体验。为了追求更加极致的性能体验,本文推出httpdns持久化缓存方案,让app首屏启动更快!
194 0
|
缓存 网络协议 开发工具
让App首屏启动更快 -- httpdns持久化缓存方案
httpdns作为解决域名劫持,调度不精准问题的一剂良药,很大程度上改善了app的用户体验。为了追求更加极致的性能体验,本文推出httpdns持久化缓存方案,让app首屏启动更快!
683 0
|
安全
Confluence 6 配置 简易信息聚合(RSS)
一个 Confluence 的管理员可以配置下面的 RSS 特性: Confluence 针对 RSS 聚合返回的最大项目数量。
1039 0

热门文章

最新文章