如何在 leafletjs 地图上获得最佳性能?我应该使用 256 像素还是 64 像素的图块,有什么区别?

How to get the best performance on leafletjs maps? Should I use 256 px or 64 px tiles, what is the difference?

我在自定义地图(游戏世界地图)上使用 leafletjs。这是一张 10240 像素的图像,我已经正确设置了它,但我注意到在缩放和导航时有些滞后行为。我的图块由自动 Photoshop 脚本正确切割,图块文件大小也得到了优化。

目前我的 tilesize 是 leafletjs 中的默认值 (256px)。但我想知道使用 64px tiles 会使性能更好还是更差?什么时候应该使用 64px 的图块,什么时候应该使用 256px 或 512px 的图块?

我找不到能满足我对这个话题的好奇心的特定答案。我希望有人能为我澄清一下。祝福!

欢迎来到 SO!

不幸的是,这是一个性能优化主题,没有适合所有人的答案。类似于捆绑资产(CSS, JS)甚至在HTML网页中内联它们的问题。

基本想法是减少向访问者显示有意义信息所需的时间(有些人称为 "first paint",尽管在交互式地图的情况下,正如您所意识到的,这也包括导航时)。

更小(但更多)的文件有助于避免加载不必要的数据。对于映射,较小的图块意味着更少的额外数据(视口外的部分图块),并且在 Leaflet 的情况下,整个图块的显示速度更快(因为 Leaflet 不显示部分图块,而是等待图块完全加载以显示它).

更大(和更小)的文件有助于减少网络请求的数量(通常浏览器默认将同时请求限制为每个域 2 个)和相关的开销(在数据和时间方面)。

当只涉及地图图块时,一个粗略而简单的规则可能是:图块越详细、越重,它们就应该越小。但一如既往,尝试不同的设置仍然是必要的。

至于同时请求的数量限制,"easy"技巧,如果你可以在服务器端实现它,就是使用多个子域(它仍然可以指向你完全相同的服务器文件) .