geoserver 的缓存技术
geoserver提到的缓存工具共有两个:tilecache和geowebcache。geowebcache是java写的,整合进geoserer中。
tilecache则是python写的一个小程序。
tilecache是由MetaCarta Labs开发的用来缓存地图,配合openlayers使地图显示更快。可以把tilecache想成一个中间件,WMS服务器不用自己缓存地图,tilecache可以帮他完成。tilecache支持多种服务器和多种OGC服务标准,以及支持多种请求方式和格式。
tilecache的配置可以看ESRI论坛的教程,因为我是用ubuntu和apache的,可能配置上有些不同,但使用大致还是相同的。tilecache中有一个tilecache.cfg文件,这是个配置文件,当有用户请求时,tilecache会载入这个文件。下面是我的配置文件,
| 1 2 3 | [cache]type=GoogleDisk #默认是Disk,googledisk是以z/x/y.extension的方式存储base=/tmp/tilecache #缓存的路径 | 
| 1 2 3 4 5 6 7 8 | [google] #图层的名称type=WMSLayer #url=http://192.168.1.106:8080/geoserver/wms #wms的urllayers=topp:states #wms所拥有的图层extension=pngresolutions=156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142#划分比例尺,不明白的可以看看这篇srs=EPSG:900913#google map的投影bbox=-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892#显示的范围 | 
如果不使用resolutions,也可以用maxResolution设定最大的比例尺,系统会根据level自动声称resolutions, 但如果同时设置,resolutions会覆盖level。bbox和resolutions要根据不同的投影来计算,之前我就是犯了这个错误,用 900913,但bbox设成了-180,-90,180,90,地图怎么也显示不出来。
接下来就用openlayers来显示,创建一个map,在option中resolutions和bbox都要和配置文件中的相同,单位要是米。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | var options ={resolutions:[156543.033900000,78271.516950000,39135.758475000,19567.879237500,9783.939618750,4891.969809375,2445.984904688,1222.992452344,611.496226172,305.748113086,152.874056543,76.437028271,38.218514136,19.109257068,9.554628534,4.777314267,2.388657133,1.194328567,0.59716428337097171575,0.298582142],projection: new OpenLayers.Projection(”EPSG:900913″),units: “m”,maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34,20037508.34),};map=new OpenLayers.Map(’map’,options);添加google地图var googleMap =new OpenLayers.Layer.Google(“Google 卫星图”,{type: G_SATELLITE_MAP,sphericalMercator: true});map.addLayer(googleMap);添加一个tilecache的WMSwms=new OpenLayers.Layer.WMS(“wms”,“http://localhost/tilecache/tilecache.py”,{layers: ‘google’,srs: ‘EPSG:900913′,format: ‘image/png’,transparent: true},{maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011),reproject: true,opacity: 0.4,isBaseLayer: false});map.addLayer(wms); | 
如果以能成功显示的话,那么恭喜你,你已经可以成功叠加了google map和tilecache生成的WMS,你也可以去缓存查看已缓存的图片。现在可以用openlayers的另一个类直接访问缓存,可用firebug来看下图片的请求地址,是以http://localhost/tilecache/tilecache.py/1.0.0/google/z/x/y.extension的形式。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | tms =new OpenLayers.Layer.TMS(“google”,“http://localhost/tilecache/tilecache.py/”,{serviceVersion: “1.0.0″,layername: “google”,type: “png”,opacity: 0.4,maxExtent: new OpenLayers.Bounds(-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011),isBaseLayer: false});map.addLayer(tms); | 
但这不是我的最终目的,我是想先缓存完图片然后再访问,而不是边访问边缓存。tilecache也想到了这点,他有一个小工具tilecache_seed.py,可以帮你完成这个工作。
| 1 | python tilecache_seed.py “http://localhost/tilecache/tilecache.py” google 510-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011 | 
上面代码是说将配置文件中图层名为google,在-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011这个范围中的缩放等级为5到10的缓存起来,最后直接用OpenLayers.Layer.TMS访问就可以了。
欢迎大家来我的新家看一看 3wwang个人博客-记录走过的技术之路
geoserver 的缓存技术的更多相关文章
- 网站缓存技术总结( ehcache、memcache、redis对比)
		网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ... 
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
		前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ... 
- .Net环境下的缓存技术介绍 (转)
		.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ... 
- [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
		[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ... 
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
		上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 安全性设置 设置客户端操作秘密 redis安装 ... 
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
		redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ... 
- PHP开发中的缓存技术汇总
		在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ... 
- .Net环境下的缓存技术介绍
		.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ... 
- ASP.NET 缓存技术分析
		缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ... 
随机推荐
- 使用SolrNet访问Solr-5.5.0
			由于今年年初刚发布的Solr-5.5.0,网上所能找到的资料少之又少,所以只能靠自己一点点摸索. 从某Hub上下载了SolrNet源码,按照教程提交文档或者查询均失败,无奈只得跟断点一点点差怎么回事. ... 
- AVL树Python实现(使用递推实现添加与删除)
			# coding=utf-8 # AVL树的Python实现(树的节点中包含了指向父节点的指针) def get_height(node): return node.height if node el ... 
- navicate for mysql  mac 含注册机 亲测可用
			百度网盘:https://pan.baidu.com/s/1hrXnRes 
- multiprocess模块---进程---进程队列
			首先明白几个概念: 同步:做完一件事情,再做另外一件事情 异步:做一件事情的时候,可以再做另外一件事情 阻塞:recv sleep accept input recvfrom 非阻塞:没有遇见上面这 ... 
- 12.mysql高级查询
			1. mysql 支持三种类型的连接查询: on 后面跟的是关联条件 内连接查询 select s.name,c.name from students as s inner join classes ... 
- 0_Simple__simpleSurfaceWrite
			使用表面写入函数,结合纹理引用实现图片的旋转▶ 源代码 #include <stdio.h> #include <windows.h> #include <cuda_ru ... 
- 关于Nginx的负载均衡
			一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器.详情请查看我的另一篇博客. 二.Ng ... 
- Jquery jcarousellite 参数说明
			参数说明: btnPrev string 上一个按钮的class名, 比如 btnPrev: ".prev" btnNext string 下一个按钮的class ... 
- as2 无法加载类或接口
			1.最大问题就是可能新建文件的时候选择as3的as或者直接复制了as3的as文件过来修改.as文件必须是2的 2.类名是否一致 3.包引用是否正确 
- eclipse 和 javaClass
			eclipse 如果设置为 Build automaticaly 会自动对当前的类进行编译,放在项目下的bin文件夹下. 1. 如果此Class有错,则编译后的Class不能用,里面仅仅写会抛出异常代 ... 
