iModel Tile 缓存

瓦片(Tile)生成的成本很高,无论是在处理时间方面还是在后端的需求方面,而且 iModel 在其生命周期中可能会被许多不同的用户重复查看。因此,缓存先前生成的瓦片是一项重要的性能优化。iTwin.js 提供了两种瓦片缓存机制,适用于不同的用途:

  • 基于云存储服务(或在更受限的网络上)缓存瓦片;
  • 存储在后端本地文件系统上的 SQLite 数据库。

基于云的缓存适用于多用户 web 应用程序。如果配置了这样的缓存,那么前端将首先检查缓存的瓦片内容,然后再要求后端为给定的瓦片生成内容。后端将其生成的每个瓦片上载到同一个缓存。详细信息可点击查看此处

本地 SQLite 数据库适用于桌面和移动应用程序,其后端(和 iModel)与前端位于同一设备上,有时可能在网络环境不佳或无连接的环境中运行。未来,这类应用可能会采用一种混合方法,即在连接到网络时咨询基于云的缓存,但在网络环境不佳时会返回到本地缓存。

只要满足以下条件,缓存的瓦片就会保持有效:

  • TileTree 对应模型中包含的几何图形未更改。
    • 这由 GeometryGuid 列跟踪,该列在修改模型中任何图元的位置或几何图形,或添加或删除几何图元时自动更新。
  • 自生成瓦片后,瓦片格式的版本号没有更改。
    • 格式版本以保守的方式递增,主要用于修复错误和优化性能。如果可以在不增加格式版本的情况下更改瓦片生成代码,应尽量避免这样做。

可以使用瓦片生成代理来预填充基于云的缓存的部分,例如,当生成 iModel 的新版本时,通过为每个瓦片树的前 N 个级别生成内容。当瓦片格式的新版本部署到生产中时,可以使用瓦片再生成;它在缓存中定位所有现有的瓦片,并使用新版本的瓦片格式生成新的瓦片。这可以最大限度地减少大量瓦片一次失效时对用户的影响。

您可以通过以下两种方式之一为应用程序后端配置云存储瓦片缓存:

results matching ""

    No results matching ""