9 сентября 2022-го

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

Современные тайлы

Этим летом отключили две незначительных штуки, связанные с тайлами OpenStreetMap. Про них почти никто не знал, но это знание придавало ощущение «внутреннего круга», техничности. Сродни умению написать запрос в API без подсказки.

Во-первых, веб-карты больше не должны добавлять префиксы к названию сервера тайлов. Никаких b.tile.osm.org и никаких {s} в шаблонах для Leaflet и JOSM. Соответствующие изменения уже приняты в Leaflet, OpenLayers, FlutterMap, OsmDroid, Overpass Turbo, MapsForge и других. Уберите и вы из своих карт, добавив ссылку на пул-реквест или коммит в тикет по ссылке выше.

Эти префиксы были придуманы, чтобы обойти ограничение браузеров на параллельное скачивание. Они грузили картинки в один-два потока на сервер, а карта на экране обычно состоит из 20-40 тайлов. Чтобы не ждать, пока они загрузятся по порядку, их качали как бы с трёх адресов параллельно. Не важно, что они указывают на один и тот же физический сервер.

С внедрением протоколов HTTP/2 и HTTP/3 подобные ухищрения устарели. Теперь ограничений нет, можно качать хоть всё одновременно. А без префикса становится проще кэшировать тайлы: в кэш попадает нормальный адрес, для всех один. Сейчас запросов по всем трём версиям протокола примерно поровну. HTTP/1, скорее всего, пользуются только приложения, а не браузеры. В том числе те, что грузят тайлы бочками.

Во-вторых, больше не работают суффиксы /status и /dirty для отдельных тайлов. Знающие люди добавляли их к адресам единичных тайлов, чтобы узнать, когда они были отрисованы, и при необходимости перерисовать. Они устарели и отключены: когда тайлы отрисовывают семь серверов, команды отправляются на любой из них — часто не тот, который прислал картинку.

Интересно, как нестабилен интернет даже по отношению к вещам, которые, казалось бы, не должны меняться. Тайлы — всего лишь картинки с фиксированными адресами. Формат один и тот же с 2006 года. Но если вы сделали веб-карту пять лет назад, то за это время она существенно устарела. Два года назад нужно было заменить http на https, а теперь — убрать префиксы. Иначе карта будет медленнее, чем возможно, и рано или поздно сломается совсем. В OpenStreetMap, чтобы оставаться на месте, бежать не обязательно, но важно хотя бы ползти в правильном направлении.

Мнения, высказанные на этом сайте, отражают точку зрения лично автора сайта и ничью больше: ни его бывших или настоящих работодателей, ни семьи и знакомых.

21 июля 2022   · · ·
← Ctrl →
· · ·   12 сентября 2022