Мгновенная загрузка страниц для российского веба. Instant page loading for Russian web.
npm install @prefetchru/prefetch






Instant page loading for Russian web
Prefetch pages 65ms before user clicks. Pre-loads links on hover with smart fallbacks for iOS/Safari, optimized for Russian browsers (Yandex.Browser, Atom), CMS platforms (1C-Bitrix, Tilda), and e-commerce. Works everywhere with zero configuration — just add one script tag.
---
prefetch.ru — библиотека для предзагрузки страниц. Начинает загрузку за 65 миллисекунд до клика пользователя при наведении курсора на ссылку.
- Работает во всех браузерах — Chrome, Safari, iOS, Firefox, Яндекс.Браузер, Atom
- Автоматические исключения: /login, /logout, /auth, /register, /cart, /basket, /add, /delete, /remove, файлы (pdf, doc, docx, xls, xlsx, zip, rar, exe), внешние ссылки
- Специальная поддержка 1С-Битрикс и Tilda
- Отключается на медленных соединениях (2G/3G) и режиме экономии трафика
- Не влияет на работу аналитики (Яндекс.Метрика, Google Analytics)
- ~4KB gzip, без зависимостей
---
``bash`
npm install @prefetchru/prefetch
`javascript
// ESM (рекомендуется)
import '@prefetchru/prefetch'
// CommonJS
require('@prefetchru/prefetch')
`
npm пакет включает ESM версию с поддержкой SSR и автоматическим определением CSP nonce:
| Файл | Описание |
|------|----------|
| prefetch.js | IIFE версия (классический
`
При импорте из бандлера (Vite, Webpack, Rollup) import.meta.url указывает на бандл, а не на исходный скрипт. В этом случае передавайте nonce через data-prefetch-nonce:
`html`
Для подключения через CDN смотрите документацию на prefetch.ru.
Вставьте код перед закрывающим тегом . Скрипт автоматически начнёт работать без настройки.
---
Настройте поведение через data-атрибуты:
`html data-prefetch-specrules
data-prefetch-allow-query-string>
`
| Атрибут | Значения | Описание |
|---------|----------|----------|
| data-prefetch-intensity | 65 (default) | Задержка hover в мс |mousedown
| | | Загрузка по нажатию кнопки мыши |viewport
| | | При появлении в viewport (mobile) |viewport-all
| | | Viewport для всех устройств |data-prefetch-specrules
| | _(пусто)_ | Включить Speculation Rules (prefetch) |prerender
| | | Полный prerender страницы в фоне |no
| | | Отключить Speculation Rules |data-prefetch-specrules-fallback
| | — | Включить fallback при Speculation Rules |data-prefetch-whitelist
| | — | Режим белого списка (только с data-prefetch) |data-prefetch-allow-query-string
| | — | Разрешить ссылки с query-параметрами |data-prefetch-allow-external-links
| | — | Разрешить внешние домены |data-prefetch-observe-dom
| | — | Отслеживать новые ссылки (для SPA) |data-prefetch-nonce
| | "abc123" | Nonce для Content Security Policy |data-prefetch-prerender-all
| | — | Разрешить prerender для всех ссылок |
Управляйте отдельными ссылками:
`html
Каталог
| Атрибут | Описание |
|---------|----------|
| data-prefetch | Явно разрешить предзагрузку |data-no-prefetch
| | Явно запретить предзагрузку |data-prefetch-prerender
| | Включить prerender для этой ссылки |
`javascript
// Доступен объект window.PrefetchRu после загрузки скрипта
// (window.Prefetch также доступен, если не занят другой библиотекой)
// Версия библиотеки
console.log(PrefetchRu.version) // "1.1.2"
// Программная предзагрузка URL
// ВАЖНО: URL проходит те же проверки, что и автоматические ссылки
PrefetchRu.preload('/catalog/product-123')
// Обновить состояние при навигации в SPA (pushState)
PrefetchRu.refresh()
// Отключить библиотеку (снять обработчики)
PrefetchRu.destroy()
`
---
`javascript
// После установки через npm
import '@prefetchru/prefetch'
// Скрипт автоматически начнёт работать
`
Полная отрисовка страницы в фоне (Chromium 109+):
`html`
Внимание: Prerender выполняет JavaScript целевой страницы до перехода. Может влиять на аналитику.
Загружать только выбранные ссылки:
`html
Для сайтов с Content Security Policy:
`html data-prefetch-nonce="{{RANDOM_NONCE}}">
`
Prerender только для важных страниц:
---
Работает во всех современных браузерах с автоматическим fallback:
| Браузер | Метод | Статус |
|---------|-------|--------|
| Chrome 109+ | Speculation Rules API | Полная поддержка |
| Яндекс.Браузер | Speculation Rules API | Полная поддержка |
| Atom (VK) | Speculation Rules API | Полная поддержка |
| Safari / iOS | fetch fallback | Работает |
| Firefox | rel="prefetch" | Работает |
| Edge | Speculation Rules API | Полная поддержка |
На iOS все браузеры (Chrome, Firefox, Edge) используют движок WebKit, который не поддерживает prefetch. Библиотека автоматически использует fetch с cache: 'force-cache' как fallback.
---
``
0 мс → Наведение курсора
65 мс → Начало предзагрузки
200 мс → Клик пользователя
~0 мс → Страница из кэша
1. Speculation Rules API (Chromium 109+) — современный API для prefetch/prerender
2. Link Prefetch () — стандартный метод для Firefoxfetch()
3. Fetch Fallback — для iOS/Safari через с кэшированием
Выбор метода происходит автоматически в зависимости от браузера.
При использовании Speculation Rules библиотека создаёт