iServer 缓存专题

发送反馈


 

1.iServer支持的缓存方式

SuperMap iServer 支持多种缓存方式,在不同的层级上为服务提供缓存支持,在浏览器层级支持浏览器端缓存,在服务层级提供Web请求缓存,此外在服务组件和提供者层级也分别提供缓存支持,具体如下。

各服务支持的组件层缓存类型

  地图服务支持的缓存类型 数据服务支持的缓存类型

文件缓存

SMTiles、GDP地图瓦片(已过时),UTFGrid属性瓦片(已过时)

-

数据库缓存

MongoDB地图瓦片、MongoDB(MVT)矢量瓦片

-

内存缓存

-

ehcache

各服务支持的提供者层缓存类型

  地图服务支持的缓存类型 三维服务支持的缓存类型 影像服务支持的缓存类型

文件型缓存

UGCV5

矢量、影像、地形、模型、地图、场景缓存

UGCV5(原始型和紧凑型)

数据库型缓存

-

-

MongoDB

 

2.缓存主要作用与适用场景

2.1缓存的作用

缓存的作用体现在两个方面,一是通过缓存文件为服务加速,二是将缓存作为数据源直接发布。

通过缓存为服务加速

通过缓存为服务加速是指对服务的的数据、图片、响应结果等按照特定的方式进行预先存储,以后在收到相同的请求时不需要服务器重新生成,从而提高数据的访问效率。如,某个地图服务预先生成了地图缓存文件,那在浏览地图时则不再需要服务器重新生成图片,而是直接返回缓存的瓦片,有效减少了计算量、提高了地图服务的出图效率。

将缓存作为数据源直接发布

部分缓存数据,如地图瓦片,也可以作为数据源直接发布,地图缓存发布的地图服务也可以提高访问效率。地图缓存发布流程如下:

2.2缓存的适用场景

浏览器端缓存、Web请求缓存、组件层缓存、提供者层缓存分别适用于不同的场景:

3.缓存启用流程

浏览器端缓存启用流程

浏览器端缓存一般默认开启,无需单独进行设置。

Web请求缓存启用流程

Web请求缓存开启方式为:启动iServer,进入 服务>高级->HTTP缓存 页面,设置开启HTTP缓存。

组件层缓存启用流程

组件层文件缓存启用方式(以启用SMTiles为例)

组件层数据库缓存启用方式(以启用MongoDB为例)

组件层内存缓存(ehcache)默认启用,不需要单独配置。

提供者层缓存启用流程

提供者层文件缓存启用方式

地图服务文件型缓存启用方式(以启用UGCV5为例):

三维服务文件型缓存启用方式:

影像服务文件型缓存启用方式:请参考配置影像服务动态缓存方案

提供者层数据库缓存启用方式

影像服务数据库型缓存启用方式:请参考配置影像服务动态缓存方案

4.缓存的生产与更新

缓存的生产方式有两种,动态生成和预缓存。其中浏览器端缓存、Web请求缓存仅支持动态缓存,而组件层缓存(除内存缓存)、提供者层缓存既支持动态缓存又支持预缓存。对组件、提供者层缓存,当预缓存存在时优先使用预缓存的文件,当预缓存不存在时方动态生成缓存。

浏览器端缓存的生产和更新

当访问服务时会动态地生成浏览器端缓存,存储在浏览器内存中,当收到相同的请求,直接把缓存结果返回。浏览器端缓存到期失效后,再次收到请求时会重新生成缓存。

Web请求缓存的生产和更新

在访问服务时,动态地在ehcache中生成服务响应结果缓存,当收到相同的请求,直接把缓存结果返回。Web请求缓存到期失效后,再次收到请求时会重新生成缓存。

组件层缓存的生产和更新

组件层缓存的生产方式如下表:

服务类型 各类服务支持的缓存类型 缓存生产方式
动态生成 预缓存
地图服务 文件缓存 SMTiles地图瓦片、GDP地图瓦片(已过时)、UTFGrid属性瓦片(已过时) 在通过地图服务出图时动态生成缓存 通过iServer分布式切图服务生成
数据库缓存 MongoDB地图瓦片 通过iServer分布式切图服务或iDesktop切图功能生成
MongoDB(MVT)矢量瓦片 -
数据服务 内存缓存 ehcache 在访问数据服务时动态生成缓存 -

缓存生成方式

地图服务

地图服务的组件层缓存支持动态生成和预缓存两种缓存生成方式。动态缓存是在访问服务的同时动态地生成缓存。而预缓存是提前生成缓存,访问服务时可以直接使用已生成的缓存文件,不再动态生成缓存。

注意:iDesktop切图功能生成的栅格瓦片能作为iServer地图服务的预缓存,但iDesktop切图功能生成的矢量瓦片不能作为iServer地图服务的预缓存

数据服务

数据服务在开启组件层缓存后,在访问数据服务时将动态生成缓存存储在ehcache中。

缓存更新方式

地图服务

地图服务的数据量通常较大,因此一般建议您通过预缓存功能来更新缓存。您可以通过iServer分布式切图服务或iDesktop切图功能更新缓存,更新缓存的方法与生成缓存的方法相同。在更新时您可以选择进行整体更新或局部更新,以iServer分布式切图服务为例进行介绍:

数据服务

数据服务组件层内存缓存的存活周期为一分钟,如一分钟内没有收到相同的请求,则该缓存自动失效。在已有的缓存失效后,再收到请求时又会重新生成缓存。

提供者层缓存的生产和更新

服务类型 缓存类型 生成方式
动态缓存 预缓存
地图服务 文件型缓存 UGCV5 在通过地图服务出图时动态生成缓存 通过iServer分布式切图服务或iDesktop切图功能生成
三维服务 文件型缓存 矢量、影像、地形、模型、地图、场景缓存 - 通过iDesktop生成场景缓存功能生成
影像服务 文件型缓存 UGCV5(原始型和紧凑型) 在通过影像服务出图时动态生成缓存 通过iServer影像服务静默切片生成
数据库型缓存 MongoDB

缓存生成方式

地图服务

三维服务

在提供者层不支持为三维服务动态生成缓存,仅支持预缓存,预缓存方式如下:

通过iDesktop“生成场景缓存” 功能生成影像缓存、地形缓存、矢量缓存、二三维地图缓存或三维场景的缓存,具体步骤请参考 iDesktop 帮助中的 生成场景缓存。注意,如果期望通过预缓存文件为三维服务加速,需要在生成预缓存后需要将已切好的三维缓存文件复制到【SuperMap iServer 安装目录】\webapps\iserver\output\{scene} 目录下。

影像服务

缓存更新方式

地图服务、三维服务、影像服务的数据量通常较大,因此一般建议您通过预缓存功能来更新缓存,更新缓存的方式与生成缓存的方式相同。在通过预缓存功能更新缓存时,您也可以根据您的需求进行整体更新或局部更新。

5.如何选择缓存

iServer对地图服务、数据服务、三维服务、影像服务都提供缓存支持,这几类服务支持开启的缓存方式下表所示:

表 iServer数据服务、地图服务、三维服务支持开启的缓存方式

  数据服务 地图服务 三维服务 影像服务
支持开启的缓存方式 浏览器端缓存、组件层缓存 浏览器端缓存、Web请求缓存、组件层缓存、提供者层缓存 浏览器端缓存、Web请求缓存、提供者层缓存 浏览器端缓存、提供者层缓存

5.1地图服务缓存选择策略

单机环境下地图服务应该如何选择缓存?

在单机环境下,地图服务可以开启Web请求缓存。

此外,如数据更新频率低,建议同时开启地图缓存,具体建议如下:

在开启地图缓存时您可以选择动态缓存或预缓存的使用方式。数据量很大时建议您使用预缓存的使用方式,可有效提高出图的效率。

多机环境下地图服务应该如何选择缓存?

多机环境包括集群环境和基于数据库的多节点服务配置信息自动同步的环境。在多机环境下,地图服务可以开启Web请求缓存。

此外,对SuperMap工作空间,SuperMap REST地图服务、OGC地图服务、在线地图服务、ArcGIS REST 地图服务发布的地图服务,如数据变更频率低,建议同时开启MongoDB地图缓存。

5.2数据服务缓存选择策略

对数据服务,iServer默认开启组件层内存缓存和浏览器端缓存,您无需进行选择,也无需进行额外的启动配置。

5.3三维服务缓存选择策略

对三维服务,可以开启Web请求缓存。

此外,由SuperMap工作空间发布的三维服务,如数据源变更频率低,建议再开启三维预缓存。

5.4影像服务缓存选择策略

对影像服务,单机环境下,建议使用UGCV5缓存;多机环境下,建议使用MongoDB缓存。