Серверное кэширование динамических страниц сайтов на Joomla 3 позволяет увеличить скорость их загрузки без применения сторонних расширений.
Содержание
В данном руководстве описан процесс функционирования и активации кэширования в CMS Joomla 3.
Что такое серверное кэширование?
Серверное кэширование подразумевает сохранение статических копий динамических страниц на сервере для последующей их передачи при HTTP-запросах, что способствует увеличению скорости загрузки сайта.
Особенности кэширования в Joomla
Внутренние средства данной CMS позволяют гибко настраивать кэширование динамических страниц или их элементов в отдельности (шаблон, компонент, модули и плагины).
В Joomla 3 существует два способа реализации серверного кэширования:
- раздел Настройка кэша
Позволяют активировать кэширование для отдельных элементов страниц сайта: шаблонов, компонентов, плагинов и модулей. - плагин Система - Кэш
Позволяет активировать кэширование страниц целиком.
Настройки кэша
Чтобы перейти к настройке кэша в общих настройках Joomla 3 в панели администрирования:
- в верхнем меню выбираем Система → Общие настройки,
- кликаем по вкладке Система,
- переходим к разделу «Настройки кэша».
Опции раздела «Настройки кэша»:
- Обработчик кэширования
- Данная опции определяет механизм кэширования. Значение «Файл» (по умолчанию) определяет, что файлы кэша будут храниться на жестком диске в папке
/cache/
(по умолчанию). Если на сервере активированы прекомпиляторы PHP, то в выпадающем списке будут предлагаться данные прекомпиляторы для обработки кэша. Стандартное файловое кэширование является наиболее стабильным. - Путь к каталогу кэша
- По умолчанию кэш хранится в папке
/cache/
. Если вы желаете использовать другую директорию, то создайте её и укажете название в данном поле. Иначе оставьте поле пустым. - Время кэширования
- Важная опция, определяющая время хранения кэша в минутах. Значение по умолчанию — 15 минут. Лучше всего использовать значение, равное приблизительной частоте обновления сайта. Если сайт обновляется раз в сутки, то указывайте значение 1440. Такой подход обеспечит максимальную скорость загрузки сайта.
- Специфическое кэширование для платформы
- Данную опцию следует активировать, если содержимое кода страницы зависит от типа устройства вывода. В таком случае данные одной страницы будут кэшироваться раздельно.
- Системный кэш
- Определяет тип кэширования: стандартное или прогрессивное. Об этом далее.
Стандартное кэширование
Данный тип подразумевает кэширование всех элементов (плагинов, шаблонов, компонентов) CMS Joomla в отдельности, в том числе модулей, в настройках которых не отключено их кэширование. В результате при первом запросе страницы после активации стандартного кэширования в папке /cache/
для каждого из элементов создаётся отдельный PHP-файл с данными. При последующих запросах эти файлы применяются для формирования страниц в течение указанного в настройках времени.
Стандартное кэширование является оптимальным и подходит для всех типов сайтов.
Прогрессивное кэширование
Данный тип использует механизм стандартного кэширования, но в дополнение кэширует все модули для каждой отдельной страницы, независимо от их индивидуальных настроек (в менеджере модулей) в один файл.
Прогрессивное кэширование не подходит для больших сайтов, т. к. генерирует кэш модулей для каждой страницы, что сильно увеличивает размер кэша и нагрузку на сервер при большом количестве одновременных запросов. Также этот тип кэширования не подходит для страниц с динамическими модулями, содержимое которых может меняться в зависимости от условий (например, виртуальная корзина, отображающая количество товаров).
Кэширование модулей
Функционал Joomla 3 предоставляет возможность управлять кэшированием модулей в индивидуальном порядке через менеджер модулей. Это актуально для стандартных модулей (HTML-код, меню, навигатор и т. д.), а также для модулей сторонних расширений, если это предусмотрено разработчиками.
Настройка кэширования модулей в индивидуальном порядке позволяет отключать генерацию PHP-файлов кэша отдельных модулей при стандартном и прогрессивном кэшировании.
Настройка кэширования модуля
Чтобы настроить кэширование модуля в панели администрирования:
- в верхнем меню выбираем Расширения → Модули,
- кликаем по названию модуля,
- кликаем по вкладке Дополнительные параметры.
Нас интересуют следующие опции:
- Кэширование
Опция имеет два значения:- По умолчанию
Если кэширование активировано в настройках, то модуль будет кэшироваться. - Не кэшировать
Модуль не будет кэшироваться при активированном стандартном кэшировании, но будет при прогрессивном.
- По умолчанию
- Срок кэширования
Значение в секундах устанавливает срок обновления кэша для модуля при стандартном кэшировании (при прогрессивном учитывается время кэширования в общих настройках).
Данные опции могут отсутствовать в настройках модулей сторонних расширений, что исключает возможность управлять их кэшированием.
Далее рассмотрим отдельные модули, с которыми могут быть проблемы при активном кэшировании.
Модули JoomShopping
Подразумеваются стандартные модули компонента интернет-магазина JoomShopping:
- Jshopping Cart (виртуальная корзина),
- Jshopping Categories (категории товаров),
- Jshopping Login (авторизация),
- и т. д.
Все эти модули не имеют опций для индивидуальной настройки кэширования и не кэшируются при стандартном кэшировании, однако кэшируются при прогрессивном.
Это является проблемой для модуля виртуальной корзины (Jshopping Cart) при включенном прогрессивном кэшировании (или активном системном плагине Кэш: модуль виртуальной корзины является динамическим, т. к. отображает количество товаров в корзине. Если система будет кэшировать данные виртуальной корзины для каждой страницы при первом запросе, то все пользователи будут видеть то количество товаров в корзине, которое было закэшировано, и оно не будет меняться в зависимости от действий пользователя.
Для интернет-магазинов подходит только стандартное кэширование (системный плагин также должен быть отключен).
Модуль Breadcrumbs (навигатор сайта)
Кэширование «хлебных крошек» может вызывать сложности: данные модулей при стандартном кэшировании сохраняются для пунктов меню, и если пункт меню является категорией, дочерние страницы которой не являются пунктами меню, то система будет выводить одинаковое значение «хлебных крошек» для всех страниц, относящихся к данному пункту меню. Решить проблему позволяет отключение кэширования модуля «Навигатор сайта» (Breadcrumbs).
Плагин «Система - Кэш»
В Joomla 3 существует еще один встроенный инструмент, реализующий кэширование страниц: каждая страница сайта будет кэшироваться в отдельный PHP-файл, содержащий скомпилированный байт-код. Эти файлы сохраняются в папке /cache/page/
и имеют высший приоритет по отношению к файлам системного кэша, генерируемым для плагинов, модулей и т. д.
Плагин «Система - Кэш» значительно ускоряет загрузку веб-страниц, но не подходит для страниц, содержимое которых может отличаться в зависимости от действий пользователей, т. к. страницы кэшируются целиком, и настройки модулей на этот кэш не влияют.
Активация плагина
Чтобы активировать системный плагин Кэш в панели администрирования:
- в верхнем меню выбираем Расширения → Плагины,
- находим и выбираем плагин «Система - Кэш»,
- меняем опцию «Состояние» на «Включено»,
- жмем Сохранить или Сохранить и закрыть.
Настройки плагина
В разделе настройки кэша определяется время не только для системного кэша, но и для кэша страниц, создаваемого данным плагином.
Остальные опции отображаются в настройках самого плагина:
- Использовать кэширование в браузере
- Данная опция позволяет задействовать механизм хранения кэша в браузере. Более тонко настроить кэширование сайта в браузере можно с помощью файла
.htaccess
. - Исключить пункты меню
- В текстовом поле предоставляется выбор пунктов меню: соответствующие выбранным пунктам страницы кэшироваться плагином не будут. Так можно исключить кэширование страниц с данными пользователя, виртуальной корзины и других динамических страниц. При этом, если активирован системный кэш, то система будет использовать его файлы для формирования данных страниц.
- Исключить URL
- Данная опция, доступная во вкладке «Дополнительные параметры», позволяет исключить кэширование страниц по URL-адресам, перечисленным в текстовой области.
Очистка кэша в Joomla
В процессе выбора и настройки механизма кэширования сайта на Joomla 3 будет необходимо неоднократно очищать файлы кэша.
Это можно осуществить стандартным способом в панели администрирования:
- Система → Очистить весь кэш
-
Для полной очистки папки
/cache/
. - Система → Очистить устаревший кэш
- Для очистки файлов кэша с истекшим сроком действия.
Самым удобным инструментом для очистки кэша в Joomla 3 является плагин Cache Cleaner, позволяющий удалять кэш в фоновом режиме по нажатию на соответствующую кнопку.
Выводы и заключение
- Серверное кэширование веб-страниц позволяет значительно ускорить загрузку сайта на Joomla.
- Серверное кэширование сайта на Joomla можно обеспечить с помощью внутреннего функционала CMS.
- Стандартное кэширование в Joomla обеспечивает кэширование компонентов, плагинов и модулей в индивидуальном порядке и не вызывает проблем на большинстве сайтов.
- Прогрессивное кэширование в Joomla дополнительно кэширует все модули в отдельный файл и не подходит для больших сайтов и сайтов с динамическими модулями.
- В Joomla есть возможность настраивать кэширование модулей.
- Активация системного плагина Кэш обеспечивает кэширование страниц целиком и не походит для веб-страниц, содержание которых зависит от действий пользователя.
- Системный плагин «Кэш» может функционировать вместе с системным кзшем, если в настройках плагина создать исключения для отдельных страниц.