Spec-Zone.ru › htmx

hx-preload

Предварительная загрузка при наведении с помощью hx-preload='mouseover'

Расширение preload позволяет загружать фрагменты HTML в кэш браузера до того, как пользователь запросит их, благодаря чему дополнительные страницы загружаются практически мгновенно.

Важно: Разумное использование предварительной загрузки может улучшить воспринимаемую производительность веб-приложения, но предварительная загрузка слишком большого количества ресурсов может отрицательно сказаться на пропускной способности канала ваших посетителей и производительности сервера. Используйте это расширение осторожно!

Установка

<script src="https://cdn.jsdelivr.net/npm/htmx.org@4.0.0/dist/htmx.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/htmx.org@4.0.0/dist/ext/hx-preload.js"></script>

Использование

Добавьте атрибут hx-preload к любым усиленным гиперссылкам и элементам hx-get, которые нужно предварительно загрузить. По умолчанию ресурсы загружаются сразу после начала события mousedown, давая приложению фору примерно в 100–200 мс для отправки ответов.

<button hx-get="/server/1" hx-preload>Preloaded on mousedown</button>
<button hx-get="/server/2" hx-preload="mouseover">Preloaded on mouseover</button>

Все запросы предварительной загрузки включают дополнительный заголовок HX-Preloaded: true.

Интеграция с hx-boost

Когда расширение предварительной загрузки подключено, все теги привязок hx-boost автоматически предварительно загружаются при событии mousedown без необходимости явно указывать атрибут hx-preload. Чтобы отключить это поведение, задайте htmx.config.preload.autoBoost = false.

<!-- these are all automatically preloaded when the preload extension is loaded -->
<nav hx-boost:inherited="true">
    <a href="/page1">Page 1</a>
    <a href="/page2">Page 2</a>
</nav>

Чтобы отключить автоматическую предварительную загрузку усиленных ссылок:

<meta name="htmx-config" content='preload:{"autoBoost":false}'>

Обычные ссылки <a href> без hx-boost нельзя предварительно загрузить, поскольку предварительная загрузка прогревает запрос htmx — она не перехватывает переходы браузера.

События запуска

hx-preload / hx-preload="mousedown" (по умолчанию)

Начинает загрузку, когда пользователь нажимает кнопку мыши. Консервативный вариант — гарантирует, что пользователь намерен щёлкнуть. Даёт серверу фору в 100–200 мс.

hx-preload="mouseover"

Предварительно загружает ресурс, когда пользователь наводит указатель мыши на элемент. Более агрессивный вариант — даёт серверу фору в несколько сотен миллисекунд.

hx-preload="custom-event-name"

Для предварительной загрузки можно использовать любое имя события, поддерживаемое спецификациями триггеров htmx.

<button hx-get="/data" hx-preload="focus">Preload on focus</button>

Конфигурация

Все параметры задаются через htmx.config.preload:

Параметр По умолчанию Описание
autoBoost true Автоматически предварительно загружать все теги привязок hx-boost при событии mousedown
boostEvent "mousedown" Событие, запускающее предварительную загрузку автоматически усиленных ссылок
boostTimeout 5000 Время в миллисекундах до истечения срока действия предварительно загруженного ответа для усиленной ссылки
<meta name="htmx-config" content='preload:{"autoBoost":true,"boostEvent":"mouseover","boostTimeout":"3s"}'>

Тайм-аут

По умолчанию срок действия предварительно загруженных ответов истекает через 5 секунд. Используйте модификатор timeout, чтобы переопределить это значение для отдельного элемента:

<button hx-get="/data" hx-preload="mousedown timeout:2s">Expires after 2s</button>

Ограничения

  • Можно предварительно загружать только запросы GET. POST, PUT, PATCH и DELETE не загружаются.
  • Обычные ссылки <a href> без hx-boost или hx-get нельзя предварительно загрузить.
  • Предварительно загруженные ответы будут повторно использованы, только если фактический запрос будет выполнен до истечения тайм-аута.

Переход с htmx 2.x

  • Атрибут preload теперь называется hx-preload.
  • Для наследования предварительной загрузки от родительского элемента теперь требуется модификатор :inherited: hx-preload:inherited.

Licensed under the Zero-Clause BSD License.
https://four.htmx.org/extensions/hx-preload/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API