Как настроить отложенную загрузку карты на сайте
Если у вас есть физический офис или магазин, куда приходят клиенты, стоит вставить на сайт карту, чтобы они легко могли вас найти, не переходя в сторонние приложения.
Это может быть карта Google, Яндекс или 2ГИС с адресом компании. К тому же, если пользователи останутся на сайте, это увеличит время визита, что полезно для SEO.
С картами есть одна проблема — они тяжелые и могут замедлять загрузку страницы.
Проверить скорость загрузки конкретной страницы можно в этом инструменте. Он бесплатно измеряет скорость загрузки в соответствии с показателем Google Core Web Vitals, оценивает разные этапы загрузки и дает рекомендации:
Чтобы страница с картой не тормозила, можно использовать «ленивую загрузку» — Lazy-load. Есть несколько вариантов реализации, о них ниже.
Загрузка карты по доскроллу до нее
Можно настроить страницу так, чтобы карта загружалась только когда пользователь долистает до нее. Может быть, карта ему и не нужна, тогда страница не будет зависать зря.
Пользователь Хабра iefedorov рассказывает, как изменить код карты от Google.
Пример исходного кода:
Нужно поменять его таким образом:
Браузер будет получать src = "", когда читателю понадобится карта.
Загрузка карты после наведения курсора
Другой пользователь Хабра, Dionisvl, предлагает загружать карту Яндекса только при наведении на нее курсора.
Конструктор Яндекса выдает такой код:
В коде страницы нужно написать контейнер для блока с картой:
Также нужны стили для статичной картинки, подойдет скриншот.
Дальше надо добавить JavaScript-код, который будет отслеживать события — наведение курсора на карту или тап по карте на экране смартфона — и подменять статичное изображение на интерактивную карту:
Готово! Теперь карта не будет тормозить загрузку страницы.
Не надо lazy-load для важного контента. И время на странице не относится к полезным метрикам. Если юзверю приходится ждать там, где получают сразу - это либо в минус, либо в девиации.
Кроме того, вы проверяли, доступно ли это тому же гуглоботу? Он не будет ждать подгрузки ерунды, у него лимиты.
Интерактивная карта это не важный контент, если адрес есть текстом, удобно размещён и размечен
Интересный прием для iframe. есть ли решение, если карта вставляется через <script>?