PageSpeed

Купить PageSpeed в магазине дополнений →
21 апреля 2020, 07:00

Описание:

Это дополнение предназначено для облегчения интеграции оптимизаций 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**. Может быть указан отдельно для ресурса **script**. |
| **crossorigin** | Не обязательный. По-умолчанию **anonymous**. Значения аттрибута **crossorigin** для всех ресурсов. Не чувствителен к регистру. Возможные значения: **anonymous**, **use-credentials**. Может быть указан отдельно для ресурса. |
| **defer** | Не обязательный. По-умолчанию **true**. Значения аттрибута **defer** для всех ресурсов **script**. Интерпретируется как **boolean**. Может быть указан отдельно для ресурса **script**. |
| **integrity** | Не обязательный. По-умолчанию **sha256**. Алгоритм, который будет использоваться для вычисления хеша контроля целостности ресурсов. Не чувствителен к регистру. Возможные значения: **sha256**, **sha384**, **sha512**, или любая их комбинация. Может быть указан отдельно для ресурса. |
| **lifetime** | Не обязательный. По-умолчанию **604800**. Срок действия кэша ресурсов. |
| **minify** | Не обязательный. По-умолчанию **html link script**. Определяет типы контента, которые будут минифицированы. Не чувствителен к регистру. Возможные значения: **css**, **css-attr**, **html**, **js**, **js-attr**, **json**, **link**, **script**, или любая их комбинация. <ul><li>**css** - inline CSS.</li><li>**css-attr** - аттрибуты style.</li><li>**html** - HTML контент.</li><li>**js** - inline JS.</li><li>**js** - аттрибуты событий.</li><li>**json** - inline JSON и JSON+LD микроданные.</li><li>**link** - CSS файлы.</li><li>**script** - JS файлы.</li></ul> |
| **preconnect** | Не обязательный. По-умолчанию **false**. Отвечает за управление тегами **preconnect**. Интерпретируется как **boolean**. |
| **quality** | Не обязательный. По-умолчанию **-1**. Отвечает за конвертирование **gif**, **jpg** и **png** изображений в формат **webp** с указанным качеством. Возможные значения: целые числа от **0** до **100**. |
| **subresources** | Не обязательный. По-умолчанию создаётся автоматически. JSON-объект, который содержит информацию про ресурсы, их версии и файлы. Либо **URL** либо свойство **name** для **cdnjs.com** API является обязательным, в то время как остальные свойства заменяются соответствующими по-умолчанию из API, если не указаны. |
| **tplBeacon** | Не обязательный. По-умолчанию **PageSpeed.tplBeacon**. Шаблон генератора критических стилей. |
| **tplConsole** | Не обязательный. По-умолчанию **PageSpeed.tplConsole**. Шаблон информации в консоли браузера. |
| **tplLinkPreconnect** | Не обязательный. По-умолчанию **PageSpeed.tplLinkPreconnect**. Шаблон тегов **link** с аттрибутом **preconnect**. |
| **tplLinkStylesheet** | Не обязательный. По-умолчанию **PageSpeed.tplLinkStylesheet**. Шаблон тегов **link** с аттрибутом **stylesheet**. |
| **tplScript** | Не обязательный. По-умолчанию **PageSpeed.tplScript**. Шаблон тегов **script**. |

#### Примеры:

**Автоматический** режим без локального кэширования медиа-файлов:
``` php
[[!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.