Joomla 3.4 - Оптимизируем системный плагин кэширования страниц
Категория: / DEV Блог
/ PHP (LAMP)
Джумла в базовой версии имеет выключенный плагин кэширования для страниц (целиком).
Если сайт изменяется не часто, но медленно работает - имеет смысл включть данный плагин.
Алгоритм работы этого плагина: слушаем события
После включения не замечаем прибавки в скорости генерации страницы?
Дело в том что плагин кэширования расположен последним в списке, а для запуска его onAfterInitialise системе приходится инициализировать все установленные системные плагины, что в навороченных сайтах вытекает в много милисекундные ожидания (например плагин компонента com_roksprocket инициализируется ~600мс). Для исправления ситуации нужно поднять его наверх - administrator - extensions - plugins, выбираем системные (System), нажимаем на сортировку и перетаскиваем плагин (Page Cache) наверх, чтобы он стал первым в списке.
Эти действия добавят проворности кэшу, но недостаточно - нам нужно чтобы проверка наличия кэша страницы отрабатывала как можно раньше.
Эту проверку можно произвести непосредственно в конструкторе и не ждать onAfterInitialise.
Был написан свой вариант плагина.
Скачать с github.
Эта версия плагина снижает время генерации страницы до 50-100мс с прежних 1-2с.
на рабочем сервере странно повел себя memcache в качестве кэш бэкенда - он работал медленнее в 5 раз чем его файловый собрат
Дополнительно был подключен простой обфускатор-минификатор для css/js на основе gulp. Нужно просто скопировать из head все скрипты и стили, которые вы хотите минифицировать и заменить их в min/config.php (пример config.example.php), при сохранении кэша плагин автоматически заменит все указанные стили/скрипты на один оптимизированный. Неуказанные в конфигурации скрипты останутся без изменений.
Чтобы сгенерировать оптимированные файлы, нужно установить gulp (должен быть установлен node.js).
идем в папку min, запускам generate.php, в корне сайта появится файл gulpfile.js
нужно выполнить команду gulp -> результат работы в виде двух файлов $assetID.js и $assetID.css будет находится в папке /assets/_/$assetID.js
Если сайт изменяется не часто, но медленно работает - имеет смысл включть данный плагин.
Алгоритм работы этого плагина: слушаем события
onAfterInitialise # смотрим есть ли кэш данной страницы, если есть отдаем клиенту, завершаем работу
onAfterRender # кэшируем содержание страницы, если она не прописана в исключениях
После включения не замечаем прибавки в скорости генерации страницы?
Дело в том что плагин кэширования расположен последним в списке, а для запуска его onAfterInitialise системе приходится инициализировать все установленные системные плагины, что в навороченных сайтах вытекает в много милисекундные ожидания (например плагин компонента com_roksprocket инициализируется ~600мс). Для исправления ситуации нужно поднять его наверх - administrator - extensions - plugins, выбираем системные (System), нажимаем на сортировку и перетаскиваем плагин (Page Cache) наверх, чтобы он стал первым в списке.
Эти действия добавят проворности кэшу, но недостаточно - нам нужно чтобы проверка наличия кэша страницы отрабатывала как можно раньше.
Эту проверку можно произвести непосредственно в конструкторе и не ждать onAfterInitialise.
Был написан свой вариант плагина.
Скачать с github.
Эта версия плагина снижает время генерации страницы до 50-100мс с прежних 1-2с.
на рабочем сервере странно повел себя memcache в качестве кэш бэкенда - он работал медленнее в 5 раз чем его файловый собрат
Дополнительно был подключен простой обфускатор-минификатор для css/js на основе gulp. Нужно просто скопировать из head все скрипты и стили, которые вы хотите минифицировать и заменить их в min/config.php (пример config.example.php), при сохранении кэша плагин автоматически заменит все указанные стили/скрипты на один оптимизированный. Неуказанные в конфигурации скрипты останутся без изменений.
Чтобы сгенерировать оптимированные файлы, нужно установить gulp (должен быть установлен node.js).
npm install -g gulp
npm install --save gulp-concat gulp-uglify gulp-concat gulp-minify-css
идем в папку min, запускам generate.php, в корне сайта появится файл gulpfile.js
нужно выполнить команду gulp -> результат работы в виде двух файлов $assetID.js и $assetID.css будет находится в папке /assets/_/$assetID.js