Состав платформы

Сжатие ресурсов

Сборка и сжатие JS, CSS и HTML.

Другие решения раздела «Состав платформы»

Установка

Подключите пакет в корне проекта на SkeekS Платформе, затем примените миграции проекта.

composer require skeeks/yii2-assets-auto-compress

Зависимости

Инструкция из репозитория

Automatically compile and merge files js + css + html in yii2 project.

This solution enables you to dynamically combine js and css files to optimize the html page. This allows you to improve the performance of google page speed.

This tool only works on real sites. On the local projects is not working!

Latest Stable Version Total Downloads

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist skeeks/yii2-assets-auto-compress "*"

or add

"skeeks/yii2-assets-auto-compress": "*"

How to use

//App config
[
    'bootstrap'    => ['assetsAutoCompress'],
    'components'    =>
    [
    //....
        'assetsAutoCompress' =>
        [
            'class'         => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
        ],
    //....
    ]
]

//App config with all options
[
    'bootstrap'  => ['assetsAutoCompress'],
    'components' => [
        //....
        'assetsAutoCompress' => [
            'class'   => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
            'enabled' => true,

            'readFileTimeout' => 3,           //Time in seconds for reading each asset file

            'jsCompress'                => true,        //Enable minification js in html code
            'jsCompressFlaggedComments' => true,        //Cut comments during processing js

            'cssCompress' => true,        //Enable minification css in html code
            
            'cssFileCompile'        => true,        //Turning association css files
            'cssFileCompileByGroups' => false       //Enables the compilation of files in groups rather than in a single file. Works only when the $cssFileCompile option is enabled
            'cssFileRemouteCompile' => false,       //Trying to get css files to which the specified path as the remote file, skchat him to her.
            'cssFileCompress'       => true,        //Enable compression and processing before being stored in the css file
            'cssFileBottom'         => false,       //Moving down the page css files
            'cssFileBottomLoadOnJs' => false,       //Transfer css file down the page and uploading them using js

            'jsFileCompile'                 => true,        //Turning association js files
            'jsFileCompileByGroups'         => false        //Enables the compilation of files in groups rather than in a single file. Works only when the $jsFileCompile option is enabled
            'jsFileRemouteCompile'          => false,       //Trying to get a js files to which the specified path as the remote file, skchat him to her.
            'jsFileCompress'                => true,        //Enable compression and processing js before saving a file
            'jsFileCompressFlaggedComments' => true,        //Cut comments during processing js

            'noIncludeJsFilesOnPjax' => true,        //Do not connect the js files when all pjax requests when all pjax requests when enabled jsFileCompile
            'noIncludeCssFilesOnPjax' => true,        //Do not connect the css files when all pjax requests when all pjax requests when enabled cssFileCompile

            'htmlFormatter' => [
                //Enable compression html
                'class'         => 'skeeks\yii2\assetsAuto\formatters\html\TylerHtmlCompressor',
                'extra'         => false,       //use more compact algorithm
                'noComments'    => true,        //cut all the html comments
                'maxNumberRows' => 50000,       //The maximum number of rows that the formatter runs on

                //or

                'class' => 'skeeks\yii2\assetsAuto\formatters\html\MrclayHtmlCompressor',

                //or any other your handler implements skeeks\yii2\assetsAuto\IFormatter interface

                //or false
            ],
        ],
        //....
    ],
];

Links

Demo (view source code)

Screenshot

SkeekS CMS admin panel


SkeekS CMS admin panel


SkeekS CMS admin panel


SkeekS CMS admin panel


skeeks!
SkeekS CMS (Yii2) — fast, simple, effective!
skeeks.com | cms.skeeks.com

CSS: отказ от обязательного mrclay/minify

CSS-обработка перенесена из mrclay/minify 3.0.14 в отдельную папку нашего пакета без изменения алгоритмов. Это убирает обязательную цепочку к abandoned-пакету marcusschwarz/lesserphp, который не нужен для обработки CSS. Лицензия и авторство сохранены. Причины, состав, ограничения, обновление сайтов и будущий план перехода на matthiasmullie/minify описаны в документации.

Важно: старый альтернативный MrclayHtmlCompressor требует явной установки mrclay/minify; основной TylerHtmlCompressor этой зависимости не требует.

README на GitHub

Поддержка

Вопросы по установке и работе решения можно задать командой SkeekS или завести обращение в репозитории.

Обновления

v1.4.5.6

Убрана обязательная зависимость mrclay/minify, которая подключала неиспользуемый LESS-компилятор marcusschwarz/lesserphp, помеченный Composer как abandoned.

Только используемые четыре CSS-класса из mrclay/minify 3.0.14 перенесены в отдельную папку src/vendor/mrclay и собственное пространство имён. Алгоритмы сохранены; добавлены исходная BSD-3-Clause лицензия, сведения об авторстве, версии и контрольные суммы исходников.

Совместимость:

  • Обработка CSS, основной HTML-форматтер и JavaScript сохраняют прежнее поведение.
  • Необязательный MrclayHtmlCompressor требует явной установки mrclay/minify либо замены на TylerHtmlCompressor. При отсутствии зависимости возвращается понятная ошибка конфигурации.
  • matthiasmullie/minify отмечен в документации как будущий отдельный этап и пока не подключён.

Проверки: PHP lint, Composer validate, 12 автономных CSS-сценариев, 144 побайтовых сравнения со старым кодом, включая реальные CSS главной и товара plitka-lab.ru. Проверены холодный и готовый кеш настоящего компонента с заблокированной загрузкой старой библиотеки, дополнительное сжатие в обоих режимах и совместимость необязательного HTML-адаптера. На боевом сайте главная, товар и их CSS возвращают HTTP 200. Визуальная проверка браузером не выполнена из-за ошибки запуска среды.

При обновлении сайтов нужно обновить пакет и зависимости через Composer. Простая загрузка файлов в vendor не изменяет composer.lock. Старые mrclay/minify и marcusschwarz/lesserphp удалятся только если больше не нужны другим зависимостям; после обновления проверить composer why и composer audit.

v1.4.5.5

Ускорено сжатие многострочных HTML-страниц без изменения результата форматирования.

  • Устранено копирование всего оставшегося документа при обработке каждой строки: используется смещение чтения.
  • Сохранены обработка pre/textarea, комментариев, дополнительные параметры сжатия и статистика.
  • Настройки приложения менять не требуется; изменение действует при использовании TylerHtmlCompressor.

Проверки: PHP 8.2, 14 регрессионных проверок и 1600 побайтных сравнений с предыдущей реализацией. На тестовом документе из 20 000 строк время алгоритма снизилось с 619 до 16 мс; это микробенчмарк, а не коэффициент ускорения всего сайта. Также выполнена проверка на работающем магазине.

v1.4.5.4
  • Пропуск повторной минификации файлов *.min.js при сборке общего JavaScript-бандла.
  • Обычные JavaScript-файлы продолжают обрабатываться JSHrink.
  • Устранён тайм-аут сборки больших готовых vendor-бандлов.
v1.4.5.3
v1.4.5.2
v1.4.5.1
v1.4.5
v1.4.4
v1.4.3.3
v1.4.3.2
v1.4.3.1
v1.4.3
v1.4.2.1
v1.4.2
v1.4.1
v1.4.0
v1.3.1.2
v1.3.1.1
v1.3.1
v1.3.1-rcпредварительный
Показать ещё 10 обновлений осталось 14