紧凑缓存存储格式用于将切片分组到大文件中,而不是以单独的文件形式存储。此格式有以下几个优点:
- 由于减少了文件数,因此更易于复制缓存。
- 减少了缓存所占的总磁盘空间。
- 由于在切片创建过程中减少了磁盘 I/O,因此切片的创建速度通常会更快。
- 由于降低了网络流量,因此采用多机部署方式创建切片时可提高可伸缩性。
了解缓存存储格式
在 ArcGIS 10.0 之前的版本中,切片缓存仅支持松散格式,这意味着每个切片将存储为 256 px × 256 px 的单个 JPEG 或 PNG 文件。因此,包含所有切片的松散缓存文件夹将非常庞大。
为显著减少切片缓存的文件大小,紧凑型缓存格式已于 10.0 版本引入。紧凑型缓存使用 .bundle 文件,每个文件最多包含 16,384 个切片。紧凑型缓存较小,更易于复制。
创建或导出缓存时,可将其存储格式指定为紧凑型或松散。
紧凑型缓存的工作原理
紧凑型缓存将多个切片分组到一个大文件(称为包)中。因此,一个缓存包含数十或数百个文件,而不是数千或数百万个文件。如果查看磁盘上的紧凑型缓存,可以看到扩展名为 .bundle 的包文件。
在紧凑型缓存的初始版本中(称为 compact),该格式也包含扩展名为 .bundlx 的单一索引文件。当缓存托管在网络共享或云存储中时,包含的单独 .bundlx 文件会对性能产生负面影响,因此 10.3 版本中引入了第二个版本的紧凑型缓存 (compactv2)。在目前创建缓存时默认使用的此版本中,.bundlx 文件包含在 .bundle 文件中。此举可大幅减少客户端需要对缓存进行的调用次数,从而提升从网络共享或云存储中使用和提供缓存时的性能。
紧凑型缓存的 compactv2 版本只能用于 ArcGIS Server 10.3 及更高版本。该格式为开放规范。
如果您希望对 10.3 之前版本创建的缓存应用 compactv2 性能改进,则需使用升级地图服务器缓存存储格式工具升级缓存。升级缓存不会创建新切片;而是对文件进行重组,使其与改进后的格式相符。
注:
升级地图服务器缓存存储格式工具在 ArcGIS Pro 中不可用。但可使用 ArcMap 或随 ArcGIS Server 一同安装的 Python。
改进后的紧凑缓存存储格式不会向后与较早版本的 ArcGIS 兼容。例如,使用版本 10.3 或更高版本创建或升级的紧凑缓存无法在此软件的较早版本中传输和使用。
导出地图服务器缓存工具使用 compact 格式作为其输出,可用于使较新的缓存与较早版本的 ArcGIS Server 兼容。如果想要将 compactv2 缓存复制到运行早期版本的 ArcGIS Server 站点,请查看复制缓存。
使用紧凑型缓存
创建缓存时,可能会在缓存文件夹中看到临时 .lock 文件和 .done 文件。.lock 文件使得 ArcGIS Server 能够追踪当前所创建的包;存在 .lock 文件并不代表客户端无法访问包。同样,.done 文件使得 ArcGIS Server 能够追踪已经创建的包。缓存工作完成后,所有的 .lock 和 .done 文件都会被删除。
小的缓存在每个级别可以只有一个包。更常见的情况是,包边界与某个地理部分相交,这样,一个级别就会有多个包(虽然在地理部分很小时,包可能不会包含所有的 16,000 个切片)。大的缓存通常会包含多个包。
包的边界由切片方案的原点确定,并且不可调整。以下内容仅供参考:在社区/街道级别比例为 1:4096 时,一个完整的包大约覆盖美国东部一个中等规模县的面积。
更新紧凑型缓存
在更新紧凑型缓存中的切片时,并不会重新创建整个包。而是更新 4096x4096 像素(无抗锯齿功能)或 2048x2048 像素(带抗锯齿功能)的细粒度面积。在 ArcGIS 文档中,有时将此面积单位称为超级切片。
从包中获取切片
ArcGIS 客户端(包括 Web API)可读取紧凑缓存格式所生成的包文件。Web 客户端会请求 ArcGIS Server 站点提供切片的具体级别、行和列。ArcGIS Server 收到请求后会返回包中的相应切片。
如果您自己编写了逻辑代码,用于从虚拟目录提取切片,则应继续使用松散格式,此格式以单个文件形式存储每个切片,并且也是 ArcGIS Server 10.0 之前版本中的唯一格式。