0.0.2 (22.11.2019)• до параметрів модуля до вкладки "Ліниве завантаження" додано опцію "Дата-атрибути у тегів img, наявність яких дає сигнал механізму, щоб механізм лейзі-підвантаження їх не чіпав (кожен дата-атрибут вказуємо з нового рядка)";
• додано список вбудованих у механізм дата-атрибутів, які не дають перепакувати зображення під ліниве завантаження: data-skip-parse, data-skip-lazy, data-no-lazy, data-lazy-original, data-lazy-src, data -lazysrc, data-lazyload;
• виправлено помилку ініціалізації ba.js через javascript;
• додано вбудовану умову, за якою механізм не спрацьовуватиме: якщо хіт, який ми відпрацьовуємо, здійснюється через аякс.
0.0.3 (30.11.2019)• додано умову, за якою механізм не спрацьовуватиме: якщо хіт, який ми відпрацьовуємо, виконується через post-запит;
• механізм перенесення стилів у кінець документа переносить тепер і інлайн-вкралення, вони розміщуються після посилань;
• при збереженні скрипту Яндекс.Метрики до локального репозиторію додано перевірку на існування папки самого репозиторію;
• у складання модуля відновлено /metrika/cpu.js, який відповідає за запуск скрипту Яндекс.Метрики з локального репозиторію.
0.0.4 (02.12.2019)• у механізмі збору за документом інлайн-вкраплень style враховується директива [if lte IE 7], зашита в html-комендарій (без цього стиль адміністративної панелі з display:none вибирається назовні та панель на сторінці прихована);
• до механізму обробки та локального зберігання лічильника Яндекс.Метрики (налаштування модуля, вкладка Я.Метрика) додано параметр, який дозволяє вказати затримку в секундах перед ініціалізацією tag.js скрипта метрики.
0.0.5 (05.12.2019)• додана підтримка скрипта Google Tag Manager: до налаштувань модуля додано вкладку "Google Tag Manager" (чекбокс активності, затримка в секундах, поле для введення коду).
• при активації механізму:
- створюється агент, який відповідає за регулярну (раз на добу) перевірку та актуалізацію локальної копії gtm.js-файлу;
- у публічній частині відстежується підключення скрипту та кадру Google Tag Manager, знайдені підключення видаляються;
- gtm-скрипт підключається з локальної копії згідно з затримкою, встановленою в налаштуваннях модуля (від нуля до десяти секунд).
0.0.6 (13.12.2019)• покращено механізм відстеження заряджених у ліниве підвантаження зображень та фонів;
• прибрано залежність від налаштувань Аспро-рішень по Яндекс.Метриці та Google Tag Manager-у: якщо активовано відповідний механізм у модулі, інші підключення відслідковуються та видаляються;
• покращено роботу з автокомпозитом;
• виправлено некоректну роботу з html-коментарями при включеному перенесенні стилів у кінець документа;
• враховано той момент, що style-вкраплення можуть зустрічатися всередині svg-тегів;
• читання груп користувачів перетворено на кешування.
0.0.7 (14.12.2019)• у налаштування модуля додано параметр, що дозволяє змістити за нижню межу екрана "червону лінію", на якій спрацьовує ліниве завантаження. За замовчуванням зміщення встановлено у 100 пікселів;
• покращено механізм лінивого підвантаження: щоб однопіксельне (1*1 піксель, а значить квадратні пропорції) зображення не рвало верстку, якщо у тега, що обробляється img задана і width і height, в стилі зображення прокидаються і ширина і висота (таким чином однопіксельний gif набуває форми зображення, що замінюється). Але в деяких ситуаціях через це перестають виконуватись стилі ширини та висоти, задані в css-файлах, оскільки не можуть пересилити відповідні параметри, встановлені елементу. Тепер при виконанні лінивого підвантаження примусові стилі чистяться;
• у налаштування модуля додані чекбокси, якими можна активувати/вимкнути постійне відстеження поява маркованих для лінивого завантаження елементів (зображень, фонів, кадрів). Механізм потрібен тоді, коли, наприклад, через аякс до нас може доставлятися html-код, перепарсений нашим механізмом і заряджений на роботу в парі з нашим лінивим завантаженням;
• враховано, що img може бути у script-тегах, а й у picture, pre, code;
• покращення в обробці та доставці на сторінку коду Я.Метрики;
• додано налаштування модуля, що дозволяє керувати кольором спинера (який з'являється при активованому механізмі перенесення стилів до кінця документа).
0.0.9 (13.01.2020)• виправлення помилки в парсері html, коли в деяких ситуаціях подвійно тіло документа.
1.0.1 (18.01.2020)• в налаштування модуля, закладка "Лінива завантаження" доданий параметр, яким можна перевизначити data-атрибут, з яким працює лінива підвантаження зображень (за замовчуванням: data-src).
1.0.3 (19.01.2020)• виправлення значення за промовчанням дата-атрибута, що використовується в роботі при лінивому підвантаженні зображень.
1.0.5 (27.01.2020)Перенесення стилів у кінець документа:
• запроваджено поняття високо-пріоритетних стилів. Такі стилі публікуються вище інших, після тега body, що відкривається;
• застосовуються механізми передзавантаження: push-технологія та rel="preload", залежно від того, виробляється композитний хіт чи ні;
• додано можливість відключати спіннер завантаження;
• додано можливість вимкнути засвітлення сторінки.
Додано параметр, яким можна вказати маски шляхів, на яких дозволено застосування механізму. Якщо параметр заповнений, механізм запускатиметься виключно на урлах, що відповідають маскам.
1.0.6 (04.04.2020)• покращено обробку шрифтів типу Icons або fontAwesome;
• у обробці шрифтів та інформації про доступні шрифти (Налаштування модуля / Шрифти) додана інформація про зображення (normal, italic, bold, ...);
• враховано та виправлено некоректну поведінку при ситуаціях, коли в тілі документа зустрічаються вкраплення тегів html, body, що генеруються javascript-функціями (типу document.write);
• покращено обробку лінивим підвантаженням фонових зображень з кирилицею або пробілами в назві і тих випадків, коли посилання на фонове зображення вказано в url() без лапок;
• додано чекбокс, яким можна активувати/відключати механізм високо-пріоритетних стилів та пуш-технології (Налаштування модуля / Файли стилів, чекбокс "Активувати механізм високо-пріоритетних стилів та пуш-технологію").
1.0.7 (07.04.2020)• прибрано forEach з коду, щоб старі версії браузерів не падали з помилкою;
• додано коректне оброблення кириличних доменів під час перевірки списку доменів, для яких механізм має бути активним.
1.0.8 (03.07.2020)• покращено обробку пропорцій фото в механізмі лінивого підвантаження. Якщо тег img має атрибути width і height, зображення-заглушка буде сформовано відповідно до пропорцій, без використання зовнішнього файлу. Настійно рекомендується використовувати саме такий підхід.
Відео: https://youtu.be/z8GTGPNkFdM
• покращено механізм аналізу тега img (враховується ситуація, при якому тег може бути розділений переносами рядків на кілька частин) та розпізнавання skip-атрибутів (атрибутів, які маркують зображення як таке, для якого не слід застосовувати ліниве підвантаження);
• у налаштуваннях модуля допрацьовано властивості "Урли, які лише дозволені" та "Урли, на яких не запускати механізм". Тепер з'явилася можливість точніше потрапити до урлу через можливості регулярних виразів. Так, наприклад, при значенні «/$» буде складено регулярне вираз «^/$» і ми зловимо урл головної сторінки (до поточного моменту правило «/» захоплювало всі можливі урли);
• оптимізовано механізм, що відповідає за згасання спіннера та засвітлення сторінки. Точніше ловиться момент, коли всі шрифти під'їхали на сторінку. Дозволяє зменшити ймовірність появи верстки до того, як стилі оброблені браузером (ефект «битої» верстки);
• для роботи під композитним режимом реалізовано підключення шрифтів із часовою міткою на хвості.
1.0.9 (24.07.2020)• покращено парсер зображень під час підготовки до лінивого підвантаження: адаптований для роботи з великими шматками коду (падав з помилкою) та прискорено роботу пошуку;
• data-src доданий до автоматичного атрибута ігнорування парсером підготовки до лінивого підвантаження, оскільки у випадках, коли використовуються інші рішення або в проект вже інтегрований механізм лінивого підвантаження, найчастіше використовується саме цей атрибут;
• покращено парсер шрифтів. Була можлива ситуація, коли css-код шрифтів неправильно розпаковувався на складові та відповідно збирався у fonts.css з помилкою;
• колонка для зберігання BASE64 коду оброблених шрифтів переведена на LONGTEXT (не розміщувалися шрифти типу FontAwesome);
• покращено роботу у зв'язці з модулем компресії, композитним кешем, оптимізовано роботу в умовах множинного виклику OnEndBufferContent.
1.0.10 (28.07.2020)• виправлено помилку розширення типу поля у таблиці базі даних, коли таблиця ще створена;
• покращено механізм визначення агентів браузерів.
1.0.11 (17.08.2020)• оптимізовано роботу js-бібліотеки модуля, облік вимог web-vitals-аудитів гугла;
• додано нову можливість — встановлення коректного значення passive-режиму прослуховувачів подій, встановлених через бібліотеку Бітрікса (налаштування модуля, закладка "BX.bind").
1.0.12 (14.04.2021)• завезений механізм управління приватним композитним ключем (Налаштування модуля / Підтримка композиту / Механізм фільтрації композитного кешу), відео з роз'ясненнями: https://youtu.be/XxvCjN-CcP8;
• враховано, що деякі партнерські модулі використовують media="print" для прискорення стилів адмінки (без цього стилі адмін-панелі підвантажувалися, але не активувалися та створювалося враження, що панель зламана);
• до списку глобальних умов, за яких механізм не спрацьовує, додано випадок, коли на хіті викинуто 404 помилки;
• вирішено проблему, коли через невалідних utf-8-символів регулярні вирази не відпрацьовували і засвітлення сторінки при перенесенні стилів у кінець документа залишалося видимим;
• оптимізовано продуктивність вклеювання службового коду модуля в тіло сторінки;
• додано обробку дата-атрибута data-skip-move="" у тегу style.
2.1.0 (01.10.2021)!!! Після оновлення слід перезберегти налаштування модуля !!!
Дивитися відео: https://youtu.be/_tyVUhiqlgQ
• Завезено механізм вирізання core-асетсів та публікацію їх на початку документа або вирізання без публікації (для роботів). За замовчуванням увімкнено
• Додано чекбокс, який активує публікацію високо-пріоритетних стилів інлайном, у тіло документа. За замовчуванням увімкнено
• Покращено роботу під композитним режимом (облік перевірочного хіта з bxrand).
2.1.1 (01.12.2021)• додано кеш-прапор обчислень, визначальних — має бути запущено механізм чи ні;
• виправлено: активований core.Прискорювач не відстежував загальну "червону кнопку" (чекбокс активації та супутні умови запуску всього механізму);
• js Ремкомплекту Прискорювача: метод екшену за замовчуванням (getFull) можна перевизначити через об'єкт options, що передається в метод. Також додано можливість перевизначити метод через дата-атрибут (data-component-action);
метод \Burlakastudio\Speeder\LazyAssetsHelper::pushAssets в режимі публікації коду інлайном (третій параметр зі значенням true) тепер маркує script атрибутом data-skip-moving.
2.1.2 (29.12.2021)• з умов, за якими механізм не запускається, виключено перевірку на 404 помилку (defined('ERROR_404'))
• виправлення механізму імпланту вмісту джаваскрипт-файлів, при якому "\\\" вставлялося в документ як "\\"
2.1.3 (13.02.2022)Оптимізація скрипту, що проксирує аякс-запити лінивого підвантаження компонентів:
• перехід у лінійний режим при отриманні помилки відповіді (як правило, пов'язане із застарілим CSRF-ключом);
• репушер запиту тепер зберігає і супровідні опції;
• доданий прапор відправленого запиту для компонента, ре-пушер не надсилає повторний запит, доки прапор не знято.
Параметр модуля "Не застосовувати на урлах"
• виправлено баг, у якому порожнє значення цього поля скасовувало роботу модуля;
• правила для урлів "/bitrix/" та "/ajax/" обробляються у будь-якому випадку, навіть якщо значення параметра залишено порожнім.
2.1.4 (25.04.2022)• Додано чекбокс, яким можна переключити механізм віддачі полегшеної версії за користувачем-агентом (Налаштування модуля, вкладка "Керування"). Якщо чекбокс активовано, полегшена версія починає віддаватися по користувачеві (коли в HTTP_USER_AGENT міститься "Lighthouse").
Якщо чекбокс вимкнено (за замовчуванням), полегшена версія віддається за мовою інтерфесу, тобто коли в списку основних мов браузера є "ru" (для php перевіряється ключ $_SERVER["HTTP_ACCEPT_LANGUAGE"], для js перевіряється window.navigator. . Вибір з мовою інтерфейсу розглядався на стрим https://www.youtube.com/watch?v=8MWmg0GFfq4.
На фронті перевірити, з якими умовами сторінка заїхала, можна через значення ключів:
- чи включений механізм по-юзерагенту: BX.message['speeder.light.by.useragent']
- чи збирав сервер сторінку так, наче це полегшена версія: BX.message['speeder.light.call']
• Якщо активовано механізм розпакування високо-пріоритетних стилів кодом прямо в тіло сторінки, пуші скриптів для прискореного завантаження не публікуються. До цього браузери видавали попередження, що скрипт був завантажений, але не використаний у документі.
• Механізм не запускається на пост-запитах (принаймні це одна з багатьох умов відбивання запуску механізму). Але авторизація - це пост-запит, на якому механізм не повинен стопоритися тільки через те, що це пост-запит. Враховано.
2.1.6 (28.12.2022)• Доданий анти-браузерний-кеш на підключення google tag manager
• Покращено механізм вирізування core-асетсів: щоб не ламати код сторінки, файли скриптів, усередині яких є використання html-тегів, підключаються посиланням
• Додана підтримка кількох лічильників GoogleTagManager одночасно
• Доданий метод, яким можна примусово встановити прапорець роздільної здатності або заборони виконання механізмів модуля. Метод \Burlakastudio\Speeder\AccessAndStatus::forceSkipReaction. Наприклад, якщо потрібно дати механізму знати, що інструментарій модуля на даному хіті не потрібен
• Покращено підтримку версії php 8.1