Інтеграція оптимізацій 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`
            &crossorigin=`anonymous`
            &defer=`true`
            &integrity=`sha256 sha384 sha512`
            &lifetime=`604800`
            &minify=`css html js json link script`
            &preconnect=`true`
            &quality=`-1`
            &subresources=`{
                "link" : [
                    { "name" : "", "version" : "", "filename" : "", "media" : "" },
                    { "url" : "", "media" : "" }
                ],
                "script" : [
                    { "name" : "", "version" : "", "filename" : "", "media" : "" },
                    { "url" : "", "media" : "" }
                ]
            }`
            &tplConsole=`PageSpeed.tplConsole`
            &tplLinkPreconnect=`PageSpeed.tplLinkPreconnect`
            &tplLinkStylesheet=`PageSpeed.tplLinkStylesheet`
            &tplScript=`PageSpeed.tplScript`
        ]]
    

Параметри:

assets
Не обов'язковий. За замовчуванням true. Відповідає за завантаження ресурсів CSS. Інтерпретується як boolean.
async
Не обов'язковий. За замовчуванням false. Значення атрибуту async для усіх ресурсів script. Інтерпретується як boolean. Може бути вказаний окремо для ресурсу script.
crossorigin
Не обов'язковий. За замовчуванням anonymous. Значення атрибуту сrossorigin для усіх ресурсів. Не чутливий до регістру. Можливі значення: anonymous, use-credentials. Може бути вказаний окремо для ресурсу.
defer
Не обов'язковий. За замовчуванням true. Значення атрибуту defer для усіх ресурсів script. Інтерпретується як boolean. Може бути вказаний окремо для ресурсу script.
integrity
Не обов'язковий. За замовчуванням sha256 sha384 sha512. Алгоритм, що буде використано для обчислення хешу контролю цілісності ресурсів. Не чутливий до регістру. Можливі значення: sha256, sha384, sha512, або будь-яка їх комбінація. Може бути вказаний окремо для ресурсу.
lifetime
Не обов'язковий. За замовчуванням 604800. Термін дії кешу ресурсів.
minify
Не обов'язковий. За замовчуванням css html js json link script. Визначає типи контенту, що будуть мініфіковані.Не чутливий до регістру. Можливі значення: css, html, js, json, link, script, або будь-яка їх комбінація.
  • css - inline CSS та атрибути style.
  • html - HTML контент.
  • js - inline JS та атрибути подій.
  • json - inline JSON та JSON+LD мікродані.
  • link - CSS файли.
  • script - JS файли.
preconnect
Не обов'язковий. За замовчуванням true. Відповідає за управління тегами preconnect. Інтерпретується як boolean.
quality
Не обов'язковий. За замовчуванням -1. Відповідає за конвертування gif, jpg та png зображень у формат webp з вказаною якістю. Можливі значення: цілі числа від 0 до 100.
subresources
Не обов'язковий. За замовчуванням створюється автоматично. JSON-об'єкт, що містить інформацію про ресурсі, їх версії та файли. Або URL або параметр name для cdnjs.com API є обов'язковим, в той час як значення атрибуту media можна не вказувати. Для cdnjs.com API інші властивості заміняються відповідними за замовчуванням з API, якщо не вказані.
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.