Інтеграція оптимізацій PageSpeed Insights для MODX Revolution

Опис:

Цей додаток призначений для полегшення інтеграції оптимізацій PageSpeed Insights для MODX Revolution. Він може:

  • Працювати в автоматичному режимі, якщо достатньо стандартної конфігурації.
  • Генерувати критичні правила стилів.
  • Отримувати ресурси строінки через API cdnjs.com та завантажувати шрифти Google Fonts.
  • Об'єднувати та мініфіковувати стилі, скрипти та JSON. Мініфіковувати HTML контент.
  • Завантажувати та кешувати медіа файли. Додавати теги preconnect.
  • Обчислювати хеші SRI для файлів та додавати атрибути defer або async до тегу script.
  • Конвертувати gif, jpg та png зображення у формат webp, якщо браузер його підтримує.
  • Одночасно працювати з декількома конфігураціями водночас, ефективно використовуючи кеш.
  • Виводити спеціалізовані теги MODX у консоль браузера для членів групи Administrator.

Режими:

Автоматичний
Коли опція subresources не задана, плагін шукає ресурси у HTML та обробляє їх.
Ручний
Обробляються лише ресурси з опції subresources.

Синтаксис:

    
        [[!PageSpeed?
            &assets=`true`
            &async=`false`
            &critical=`true`
            &crossorigin=`anonymous`
            &defer=`true`
            &integrity=`sha256`
            &lifetime=`604800`
            &minify=`html link script`
            &preconnect=`true`
            &quality=`-1`
            &subresources=`{
                "link" : [
                    { "name" : "", "version" : "", "filename" : "", "media" : "" },
                    { "url" : "", "media" : "" }
                ],
                "script" : [
                    { "name" : "", "version" : "", "filename" : "", "media" : "" },
                    { "url" : "", "media" : "" }
                ]
            }`
            &tplBeacon=`PageSpeed.tplBeacon`
            &tplConsole=`PageSpeed.tplConsole`
            &tplLinkPreconnect=`PageSpeed.tplLinkPreconnect`
            &tplLinkStylesheet=`PageSpeed.tplLinkStylesheet`
            &tplScript=`PageSpeed.tplScript`
        ]]
    

Параметри:

assets
Не обов'язковий. За замовчуванням true. Відповідає за завантаження ресурсів CSS. Інтерпретується як boolean.
async
Не обов'язковий. За замовчуванням false. Значення атрибуту async для усіх ресурсів script. Інтерпретується як boolean.
critical
Не обов'язковий. За замовчуванням true. Відповідає за генератор критичних стилів. Інтерпретується як boolean.
crossorigin
Не обов'язковий. За замовчуванням anonymous. Значення атрибуту сrossorigin для усіх ресурсів. Не чутливий до регістру. Можливі значення: anonymous, use-credentials. Може бути вказаний окремо для ресурсу.
defer
Не обов'язковий. За замовчуванням true. Значення атрибуту defer для усіх ресурсів script. Інтерпретується як boolean. Може бути вказаний окремо для ресурсу script.
integrity
Не обов'язковий. За замовчуванням sha256. Алгоритм, що буде використано для обчислення хешу контролю цілісності ресурсів. Не чутливий до регістру. Можливі значення: sha256, sha384, sha512, або будь-яка їх комбінація. Може бути вказаний окремо для ресурсу.
lifetime
Не обов'язковий. За замовчуванням 604800. Термін дії кешу ресурсів.
loading
Не обов'язковий. За замовчуванням lazy. Значення атрибуту loading для тегів img та iframe. Не чутливий до регістру. Можливі значення: auto, eager, lazy.
minify
Не обов'язковий. За замовчуванням html link script. Визначає типи контенту, що будуть мініфіковані.Не чутливий до регістру. Можливі значення: css, css-attr, html, js, js-attr, json, link, script, або будь-яка їх комбінація.
  • css - inline CSS.
  • css-attr - атрибути style.
  • html - HTML контент.
  • js - inline JS.
  • js-attr - атрибути подій.
  • json - inline JSON та JSON+LD мікродані.
  • link - CSS файли.
  • script - JS файли.
preconnect
Не обов'язковий. За замовчуванням false. Відповідає за управління тегами preconnect. Інтерпретується як boolean.
quality
Не обов'язковий. За замовчуванням 80. Відповідає за конвертування gif, jpg та png зображень у формат webp з вказаною якістю. Можливі значення: цілі числа від -1 до 100, де -1 вимикає цю функцію.
subresources
Не обов'язковий. За замовчуванням створюється автоматично. JSON-об'єкт, що містить інформацію про ресурсі, їх версії та файли. Або URL або параметр name для cdnjs.com API є обов'язковим, в той час як значення атрибуту media можна не вказувати. Для cdnjs.com API інші властивості заміняються відповідними за замовчуванням з API, якщо не вказані.
tplBeacon
Не обов'язковий. За замовчуванням PageSpeed.tplBeacon. Шаблон генератора критичних стилів.
tplConsole
Не обов'язковий. За замовчуванням PageSpeed.tplConsole. Шаблон інформації в консолі браузера.
tplLinkPreconnect
Не обов'язковий. За замовчуванням PageSpeed.tplLinkPreconnect. Шаблон тегів link з атрибутом preconnect.
tplLinkStylesheet
Не обов'язковий. За замовчуванням PageSpeed.tplLinkStylesheet. Шаблон тегів link з атрибутом stylesheet.
tplScript
Не обов'язковий. За замовчуванням PageSpeed.tplScript. Шаблон тегів script.

Приклади:

Автоматичний режим без локального кешування медіа-файлів:

    
        [[!PageSpeed?
            &assets=`false`
        ]]
    

Остання версія jQuery з щоденним оновленням з jsdelivr.net:

    
        [[!PageSpeed?
            &defer=`false`
            &lifetime=`86400`
            &subresources=`{
                "script" : [
                    { "url" : "https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js" }
                ]
            }`
        ]]
    

Остання версія Bootstrap з defer для усіх ресурсів script та щотижневим оновленням з cdnjs.com:

    
        [[!PageSpeed?
            &subresources=`{
                "link" : [
                    { "name" : "twitter-bootstrap", "filename" : "css/bootstrap.min.css" }
                ],
                "script" : [
                    { "name" : "jquery" },
                    { "name" : "popper.js", "filename" : "umd/popper.min.js" },
                    { "name" : "twitter-bootstrap" }
                ]
            }`
        ]]
    

Примітки:

Одночасному виконанню запобігає додаток System V Semaphores. Кеш можна очистити вручну у меню Управління / Очистити кеш / PageSpeed. При використанні автоматичної конвертації gif, jpg та png зображень у формат webp необхідно додатково мати 80% вільного місця під кеш. Автоматичний режим не може і не буде самостійно працювати на будь-якій конфігурації MODX. Цей додаток використовує бібліотеку Minify.