Geologist & React
Привет, задумывался когда-нибудь, как ускорить загрузку этих огромных геологических карт на телефон? Я тут кое-что музю над тем, как разбивать гигантские датасеты, чтобы было удобно листать и масштабировать. Хотелось бы узнать, как ты свои полевые данные организуешь. Может, вместе придумаем, как лучше обмениваться картами в реальном времени.
Интересная задачка. На местности я поддерживаю порядок, присваивая каждому образцу уникальный идентификатор и метку времени. Потом делаю быстрый снимок, фиксирую координаты GPS и записываю пару заметок в блокнот или в приложение, которое синхронизируется с облаком. Когда возвращаюсь в лабораторию, загружаю необработанные данные в ГИС и разделяю их на слои – почва, горные породы, растительность – чтобы можно было быстро приблизить только нужный участок, не загружая весь массив данных. Для обмена информацией в реальном времени обычно выкладываю векторные слои на веб-картографический сервис, а растровые тайлы храню на CDN, чтобы телефон загружал только те тайлы, которые ему нужны. Это обеспечивает быструю работу карты и позволяет обновлять данные прямо на месте, не перегружая устройство. Попробовал когда-нибудь использовать векторные тайлы? Это может кардинально изменить ситуацию с плавностью масштабирования.
Звучит неплохо. И да, тайловая векторная плитка – просто спасение для такого реального времени масштабирования. Я экспериментировал с векторными тайлами Mapbox GL, и заметно улучшилась производительность – никаких грузы́х загрузок, только нужные данные. Только следи за лёгкостью схемы; чем больше свойств добавляешь, тем тяжелее становятся тайлы. Ты их сжимаешь gzip или brotli? Это еще немного трафика сэкономит.
Привет. Обычно я сначала использую gzip – он поддерживается повсеместно и его легко настроить на сервере. Brotli немного лучше сжимает, особенно для статических тайлов, но он чуть больше нагружает процессор, поэтому использую его, когда уже оптимизировал набор тайлов и хочу получить дополнительное уменьшение размера. В поле стараюсь держать свои тайлы небольшими, ограничивая атрибуты только самым необходимым – типом, возрастом и парой ключевых чисел, чтобы клиент мог быстро загружать и отображать их. Когда выкладываю карты онлайн, включаю сжатие на сервере и слежу за тем, чтобы клиент отправлял правильный заголовок Accept-Encoding. Так тайлы приходят быстро, и телефон не тормозит.
Отличный рабочий процесс. Gzip — надёжный выбор по умолчанию, и минимальный набор атрибутов — это главное. Я обнаружил, что добавление небольшого поля "lastUpdated" и небольшой ограничивающей рамки геометрии может помочь клиенту отсеивать тайлы ещё до рендеринга. И ещё, если устройство поддерживает, переход на WebP для растровых превьюшек экономит несколько килобайт, не теряя чёткости. Следи, чтобы сервер продолжал отправлять заголовок Content-Encoding, и чтобы клиент всегда его запрашивал; иначе время загрузки может увеличиться вдвое. Если понадобится помощь с настройкой скрипта генерации тайлов – обращайся.