Интеграция оптимизаций 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. Значения аттрибута crossorigin для всех ресурсов. Не чувствителен к регистру. Возможные значения: 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 с указанным качеством. Возможные значения: целые числа от до 100.
subresources
Не обязательный. По-умолчанию создаётся автоматически. JSON-объект, который содержит информацию про ресурсы, их версии и файлы. Либо URL либо свойство name для 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. Кэш можно очистить вручную в меню Управление / Очистить кэш / cdnjs.com. При использовании автоматической конвертации gif, jpg и png изображений в формат webp необходимо дополнительного иметь 80% места под кеш. Автоматический режим не может и не будет самостоятельно работать на любой конфигурации MODX. Это дополнение использует библиотеку Minify.