Drupal 8 пропонує десятки корисних модулів для оптимізації швидкості сайту. Ми оглядали вбудований модуль BigPipe та контрібний модуль Subrequests. А сьогодні з радістю спостерігаємо появу новинки для підвищення швидкодії — це модуль Quicklink в Drupal 8. На його прикладі ми побачимо, що по-справжньому швидкий сайт — це той, що завжди на крок попереду намірів користувача. Поїхали!
Суть модуля Quicklink в Drupal 8
Модуль Quicklink пришвидшує Drupal-сайти, використовуючи механізм попереднього завантаження (prefetching).
Модуль виявляє посилання, що розташовані в активному екрані користувача. Людина теоретично може захотіти клікнути на них. Тож в моменти неактивності браузера контент із них починає зберігатися в кеш. І коли користувач справді за ними переходить — все відображається миттєво.
Quicklink базується на легкій JavaScript-бібліотеці — GoogleChromeLabs Quicklink library. Щоб виявляти посилання, використовується Intersection Observer API.
Метод requestIdleCallback відповідає за те, щоб визначати час неактивності браузера. Модуль Quicklink також помічає випадки повільного інтернет-з’єднання, і тоді не використовує “prefetching”.
Модуль підтримує найкращі Drupal-практики з оптимізації швидкодії. Більше деталей — просто зараз.
Як працює модуль Quicklink в Drupal 8
Встановлення модуля Quicklink
Бібліотека Quicklink буде за замовчуванням завантажуватись із CDN, або ж ви можете зберегти її локально. Модуль встановлювати модуль вручну або через Composer. Автори модуля рекомендують спосіб через Composer, для чого також потрібно буде перевірити файл Composer.json.
Налаштування модуля Quicklink
Коли модуль встановлено та увімкнено, його налаштування доступні за адресою Configuration — Development — Quicklink Configuration.
Дефолтні налаштування модуля Quicklink підійдуть більшості сайтів. Давайте поглянемо на його можливі опції. Вони представлені в 5 вкладках.
1) У вкладці “Prefetch Ignore Settings” ми можемо обрати, які посилання ігнорувати (не використовувати для них попереднє завантаження). Згідно з найкращими Drupal-практиками у сфері підвищення швидкості сайті, модуль по дефолту ігнорує:
- адмін-посилання (які містять /admin, edit/, і так далі)
- посилання з AJAX (які містять клас use-ajax або закінчуються на /ajax)
- посилання з хешами (#)
- посилання, що мають файлове розширення (щоб не довелось попередньо завантажувати PDF, MP3, і так далі)
Крім того, можна прописати конкретні URL-шаблони, які потрібно ігнорувати.
2) У вкладці “Optional Overrides” ми можемо:
- перевизначити CSS-селектор, де модуль повинен шукати гіперпосилання (по дефолту це весь документ)
- перевизначити домени, для яких буде застосовуватись попереднє завантаження
- задати конкретні шляхи, для яких буде застосовуватись попереднє завантаження
3) У вкладці “When to Load Library” ми можемо контролювати, в яких контекстах бібліотека Quicklink повинна завантажуватись. Рекомендовані опції (встановлені за замовчуванням):
- завантажувати бібліотеку тільки для анонімних користувачів
- не використовувати попереднє завантаження під час сесій (наприклад, у кошику Drupal Commerce)
Також можна обрати, для яких контент-типів бібліотека не буде завантажуватись
4) У вкладці “Extended Browser Support” ми можемо обрати, завантажувати чи ні поліфіл Intersection Observer з polyfill.io, який дає можливість модулю Quicklink працювати з браузерами Safari та Microsoft Edge.
5) У вкладці “Debug” ми можемо увімкнути режим дебагінгу. Тоді логи модуля Quicklink будуть зберігатися для подальшого перегляду в консолі Developer Tools. Це нам знадобиться, коли ми захочемо перевірити роботу модуля та подивитись, чому для деяких посилань могло не спрацювати попереднє завантаження.
Переглянути процес попереднього завантаження можна у вкладці Network в консолі Developer Tools. Стовпчик “Initiator” вказуватиме “Quicklink” як іцініатора HTTP-запиту.
Підвищення швидкості вашого Drupal 8 сайту
Модуль Quicklink в Drupal 8 розширює арсенал розробника новими можливостями з оптимізації швидкодії. Наша Drupal-команда готова допомогти вам у використанні модуля Quicklink, а також проаналізувати весь сайт за різними аспектами та покращити його швидкість.