Интернет. Железо. Программы. Обзоры. Операционные системы
Поиск по сайту

Как настроить кэширование в Joomla. Кэш в Joomla – разбираемся в деталях Отключить кэширование joomla

JotCache – это бесплатный компонент кэширования Joomla, который может ускорить сайт и снизить нагрузку на сервер. В предыдущей статье «Обзор JotCache. Кэширование Joomla 3 » мы рассмотрели основные возможности расширения, общий «алгоритм» его настройки, ознакомились с тестами и результатами работы сайта с\без JotCache и начали более дательный обзор его интерфейса. В этой статье поговорим об исключениях «элементов» сайта из кэширования и о настройках плагина кэша Джумла.

В Joomla 3.6 появились улучшения в плане системы кэша: очистка кэша Joomla одной кнопкой и поддержка реверсивного кэширования . Но даже с учётом этого JotCache обладает гораздо большими возможностями, особенно в плане тонкой настройки и решения проблем с кэшированием для динамических страниц и элементов сайта.

Исключить URL

В разделе Исключить URL (рисунок ниже) JotCache позволяет включить или исключить кэширование страниц, создаваемых определёнными компонентами. Обратите внимание, что в настройках системного плагина JotCache Вы устанавливаете, для чего служит данный раздел – для включения в кэширование или исключения из него (вкладка Плагин, опция Раздел кэширования URL ). В связи с этой настройкой раздел может называться Включить URL . Тогда все правила, заданные в нём, будут означать, что эти страницы нужно включать в кэш Джумла. В дальнейшем, когда пишу «исключить», подразумевается, что можно и включить – в зависимости от настроек плагина.

Не обязательно исключать кэширование всего компонента. В моём примере полностью исключены из кэша AJAX комментарии Cсomment Pro и SEF компонент sh404SEF . Cсomment Pro исключил из-за проблемы с дублированием страниц, а вот sh404SEF исключил из-за того, что при запросе несуществующей страницы первый раз сервер отдавал ответ 404, а при последующих запросах этой несуществующей страницы - 200, так как страница с неправильным URL попадала в кэш Джумла.

Можно исключить из кэширования не все страницы компонента, а отдельные его страницы, в URL-адресе которых содержатся определённые запросы. Например, так было сделано для кэширования JoomShopping 4 (рисунок ниже). Для этого в столбце Просмотр исключений и параметры запроса напротив «jshopping» были добавлены параметры запроса через запятую: «controller=cart,controller=user,controller=checkout,controller=wishlist,controller=search» (без кавычек). Плюс, исключите позицию шаблона, где размещается корзина.


Для корректного кэширования VirtueMart 3 в качестве исключений нужно задать «cart,user,orders,askquestion,invoice,pluginresponse,state». Плюс, исключите позицию шаблона, где размещается корзина.

Параметры запроса можно посмотреть в URL-адресе страницы, где возникают проблемы с кэшем. Если у Вас включены ЧПУ, или отключите их, чтобы видеть не ЧПУ URL, или на вкладке Обзор в JotCache нажмите на иконку глазика напротив «проблемной» страницы.

В примере со страницей 404 и sh404SEF достаточно задать в исключениях параметров запроса значение «error404».

Исключить позицию

Если у Вас на сайте используются модули, содержимое которых критично к кэшированию, например, модуль переключателя валют интернет-магазинов, то в данном разделе (рисунок ниже) можно исключить из кэширования позицию шаблона, в которой находится подобный модуль.

Всё рассмотренное ранее кэширование – это серверное кэширование. Оно существенно увеличивает скорость загрузки и сокращает нагрузку на сервер (за счёт сокращения времени генерации страницы).

А вот кэширование в браузере на стороне клиента может значительно увеличить скорость доступа пользователя к странице, причём без нагрузки на сайт. Страницы закэшированные в браузере не загружаются с сервера сайта. Подобный кэш приемлем только для очень статических страниц. Например, информация о компании, условия оплаты и доставки и так далее. Суть в том, что после посещения такой страницы браузер пользователя не будет обращаться к серверу сайта за получением данной страницы в течение всего времени жизни кэша браузера, который Вы задали в настройках JotCache на вкладке Базовые . Есть исключение – пользователь очистил кэш своего браузера или принудительное обновление страницы.

Для работы данной опции в настройках плагина JotCache на вкладке должна быть включена опция Кэширование браузера (смотрите всплывающее окно!) .

Учитывая, что в реальности очень мало страниц сайтов могут подвергаться кэшированию в браузере, то в JotCache работает принцип: не кэшировать страницы в браузере, если их адрес или часть адреса не заданы в разделе Включить кэш браузера (рисунок ниже).


Плагин кэширования JotCache

Большинство настроек собраны в системном плагине JotCache. Настройки в нём разделены на пять вкладок.

  1. Плагин.
  2. Описание. Тут есть краткое текстовое описание JotCache и ссылка на справочную систему на сайте разработчика (на английском языке).
  3. Режимы работы кэша.

Рассмотрим данные вкладки более детально. Остановимся только на тех опциях, которые, по моему мнению, пригодятся большинству веб-мастеров. Напомню, что опции оснащены всплывающими подсказками на русском языке и для них доступна расширенная англоязычная документация.

Плагин

На данной вкладке (рисунок ниже) можно задать время жизни кэша сервера (опция Время кэширования ), активировать кэш браузера Joomla (опция Время жизни кэша браузера ) и задействовать автоматическую очистку кэша.

JotCache позволяет использовать разные режимы работы кэша Joomla в зависимости от браузера/устройства (рисунок ниже). Это может быть полезно для устранения конфликтов в отображении сайта. Особенно в случае с Internet Explorer.

  • Исключение. Сайт будет загружаться без использования кэша.
  • Общий. Содержимое страницы для этого типа браузеров хранится в одном общем кэше.
  • Индивидуальный. Содержимое страницы хранится в собственном выделенном хранилище кэша.

Стоит особенно отметить опцию Исключить ботов . Активируя её, Вы форсируете отдачу поисковым системам страниц сайта без использования кэша. Мне это помогло избавиться от проблем дублирования контента страниц, на которых есть AJAX комментарии. Если поисковые роботы не создают ощутимую нагрузку на Ваш сайт, тогда, на мой взгляд, лучше отдавать им самый «свежий» контент не из кэша.

JotCache позволяет хранить файлы кэша как непосредственно на жёстком или SSD-диске Вашего хостинга – «Файл», так и в оперативной памяти сервера – «Memcache» или «Memcached» (рисунок ниже). Для возможности использования «Memcache» или «Memcached» нужно, чтобы у Вас на сервере/хостинге была такая возможность. Если у Вас VPS или выделенный сервер, Вы сможете установить и настроить нужный модуль.

Если у Вас хостинг на SSD-дисках, то не думаю, что Вы увидите разительные отличия между кэшированием «Файл» и «Memcache» или «Memcached». А вот для владельцев хостингов на обычных дисках могут быть положительные отличия.

При тестировании мной кэширования «Memcached», не в Joomla 3.5.1 и не с JotCache, а со стандартным кэшем Joomla, я не заметил улучшения скорости или снижения нагрузки. Даже наоборот – скорость уменьшилась. Возросло количество потребляемой памяти (ОЗУ) и увеличилась нагрузка на процессор. Это произошло в результате появления нового процесса «Memcached». Сначала предположил, что, возможно, просто не настроил сам модуль Memcached на сервере. Или моего VPS (процессор 2x2.8 ГГц, 1024 Мб ОЗУ, SSD) недостаточно для того, чтобы увидеть положительный результат. К тому же нагрузки на сервер\сайт не очень большие, да и хранение кэша в файле на SSD - это уже хорошо (по сравнению с «обычными» винчестерами). Спустя некоторое время в статье «Memcached и PHP ликбез » нашёл объяснение: «…применять кэширование стоит только на высоконагруженных ресурсах. Ведь каждый раз, подключаясь к серверу Memcached, вы тратите драгоценное время, что скорее всего не будет оправданным. … Также не стоит забывать о расходовании памяти! Учтите, что положив 300 мегабайт в кэш, вы отняли у себя 300 мегабайт ОЗУ...»


На вкладке (рисунок ниже) можно включить кэш браузера Joomla (одноимённая опция).

Кэширование браузера (смотрите всплывающее окно!). Если для данной опции задано Да , то JotCache будет использовать механизм для хранения кэша в браузере. Используйте очень осторожно. В компоненте JotCache, на странице Время жизни кэша браузера , Вы можете назначить, какие страницы сайта должны кэшироваться в браузере. Выбранные страницы кэшируются в браузере пользователя без перезагрузки с сервера сайта в течение всего времени истечения кэша браузера. Это время истечения можно задать отдельно для каждого заданного URL. Время истечения кэша по умолчанию можно задать в настройках компонента.

Очищать отредактированные страницы . Выберите Да для автоматического удаления отредактированных страниц из кэша. У пользователей, которые редактируют содержимое из фронтальной части сайта должны быть права, как минимум, для создания.

Исключить URL адреса, содержащие запрос . Все страницы, в URL-адресе которых есть запрос (часть URL-адреса после символа "?") будут исключены из кэширования. Включайте данную опцию только тогда, когда для опции Включить SEF (ЧПУ) в общих настройках Joomla задано Да .

JS и CSS интеграция . Позволяет настроить интеграцию JotCache с компонентами оптимизации скорости загрузки сайта JCH Optimize , Rokbooster или Scriptmerge, для корректного кэширования оптимизированных страниц и очистки их кэша.

Если Вы решили установить один из упомянутых компонентов оптимизации скорости загрузки сайта, сперва отключите кэширование, настройте компонент оптимизации, проверьте всё. Если Вы удовлетворены результатом, включите кэширование. Интеграция позволяет избавиться от возможных проблем совместимости.

Как видите JotCache, в отличие от стандартной системы кэширования, позволяет весьма тонко настроить кэш Джумла, добившись увеличения производительности, снижения нагрузки на сервер и сохранив функциональность и внешний вид сайта. Отмечу, что для проектов, где применяется большое количество динамического контента, процесс настройки может быть непростым, потребует много времени и внимательного изучения документации. При более динамичном содержимом сайта менее заметный эффект от кэширования.

  • Официальный сайт разработчика (на англ.).
  • Документация (на англ.).

Зачем использовать кэш?

Все просто. Получение ранее сохраненной информации намного быстрее (в 10 или более раз), чем её первоначальная генерация. Если вам нужен радикальный пример - книга является долгосрочным кэшем знаний её авторов. Аккумулирование этих знаний может занять годы, в то время как чтение этого кэша намного быстрее.

Но давайте вернемся к Joomla, и если быть более точным, здесь мы имеем дело с кэшированием веб-приложения - созданием временных статических копий динамических страниц (или более мелких единиц информации). Кэширование свойственно для веб-приложений, так как типичный веб-сайт отображает один и тот же контент снова и снова, и без кэша приходилось бы все генерировать заново для каждого показа страницы. Система кэширования временно сохраняет сгенерированную кодом информацию в объекте кэша, и отдает её обратно, когда она запрашивается следующим пользователем.

Типы кэша в Joomla

Кэш страницы (Page cache)

Делает снимки целой страницы, включая всё: компоненты, модули, плагины и шаблон. Это самый быстрый, но при этом наименее гибкий подход кэширования. Для его активации необходимо включить плагин «Система - Кэш».

Прогрессивный кэш (Progressive cache)

Это тип кэша появился в Joomla 1.6. Он делает снимки каждого уникального набора модулей (обычно каждой страницы). Влияет на все модули и работает как слой над кэшем модулей, переопределяя их настройки. Показывает контент индивидуально для каждого посетителя. Включается при установке уровня кэша в значение «Прогрессивный» в общих настройках сайта.

Стандартный кэш (Conservative cache)

Если вам нужен более тонкий контроль над каждым кэшем модулей в отдельности, то используйте стандартный уровень кэширования. Еще одно его отличие от прогрессивного кэша в том, что он показывает один и тот же закэшированный контент всем посетителям веб-сайта.

Кэш модуля и представления компонента

Они формируют своеобразную группу, так как оба создают статическую копию полных выходных данных компонента или модуля. Это наиболее распространённый тип кэша, который иногда приравнивают к кэшированию в Joomla в общем.

Его позитивной стороной является то, что он хорошо проявляет себя в плане скорости. А негативная сторона заключается в том, что он отключает любое взаимодействие пользователь<->расширение<->фреймворк, пока не истечет закэшированная копия. Это означает, что он не подходит для компонентов или модулей, которые реагируют на действия пользователя или отображают часто изменяемый контент.

Так как закэшированная копия модуля или компонента содержит только собственные выходные данные, любой внешний файл, который будет вызван с помощью таких методов как $document->addStyleSheet() не будет подключен. Были придуманы различные обходные решения, но все они требуют дополнительных вычислительных ресурсов, что уменьшает эффект использования кэширования.

Кэширование представления компонента

Кэширование представления компонента осуществляется с помощью метода display($cachable, $safeurlparams) контроллера. Для этого параметр $cachebale необходимо установить в значение true , а через параметр $urlparams передать массива URL-параметров и их типов фильтра:

$cachable = true; $safeurlparams = array("catid" => "INT", "id" => "INT", "cid" => "ARRAY", "limit" => "UINT", "limitstart" => "UINT", "filter_order" => "CMD", "filter_order_Dir" => "CMD", "filter-search" => "STRING", "lang" => "CMD", "Itemid" => "INT"); parent::display($cachable, $safeurlparams);

При этом массив URL-параметров формирует уникальный cache id.

Режимы кэширования модуля

Существует 5 различных режимов кэширования модуля. Три из них активируются через поле cachemode в XML-файле манифеста модуля:

  • static - будет использоваться один кэш-файл для всех страниц с одинаковыми параметрами модуля. Рекомендуется для модулей, которые не меняются.
  • itemid - изменяется при смене Itemid. Такой режим больше всего подходит для динамических модулей, которые изменяются от страницы к странице, например: меню, изображения контента и т.п.
  • oldstatic - обратно совместимый с Joomla 1.5 режим.

Еще два режима кэширования должны вызываться непосредственно из модуля:

  • safeuri - Id кэша создается из массива URL-параметров, так же как в компоненте. Используйте этот режим, если модуль зависит от параметров URL, а не Itemid (например модуль, который отображает изображение в зависимости от категории). Свойство $cacheparams->modeparams является массивом URL-параметров и их типов фильтра.
  • Id - модуль устанавливает свой собственный кэш в зависимости от собственной формулы, которая передается через $cacheparams->modeparams

Для использования этих двух режимов, вместо поля cachemode используйте поле owncache в XML-файле манифеста:

Свойства объекта, которые передаются в метод moduleCache() , не требуют особых разъяснений. В качестве примера можно взять модуль связанных материалов (mod_related_items), который использует режим safeuri и заменяет некешированную функцию modRelatedItemsHelper::getList($params) :

$cacheparams = new stdClass; $cacheparams->cachemode = "safeuri"; $cacheparams->class = "ModRelatedItemsHelper"; $cacheparams->method = "getList"; $cacheparams->methodparams = $params; $cacheparams->modeparams = array("id" => "int", "Itemid" => "int"); $list = JModuleHelper::moduleCache($module, $params, $cacheparams);

Кэш обратного вызова (Callback cache)

Этот тип кэша позволяет дифференцировать различные части расширения и кэшировать только те, которые нужно кэшировать, при этом оставляя динамические части некэшируемыми. Кэширует результаты вызова функции в коде.

Кэш выходных данных (Output cache)

Кэширует выходные данные некоторой части скрипта. В основном это output buffering с кэшированием, и используется довольно редко.

Raw-кэш (Raw cache)

Кэширует любые элементы данных. Полностью контролируется разработчиком - что сохранять, когда сохранять и как классифицировать сохраненные элементы (cache id). Это тип кэша часто используется ядром Joomla для различных операций: список компонентов, список модулей, дерево меню, доступные языки, группы пользователей и т.п.

Обходные решения (Workarounds)

Обходные решения помогают обойти известные ограничения кэширования, такие как невозможность подключения файлов стилей или javascript из модуля или компонента. При использовании кэша представления компонента и кэша обратного вызова, можно включать или выключать определенные обходные решения. Использовать их нужно только тогда, когда закэшированная функция манипулирует хидером (header) или путем (pathway).

setWorkarounds

Метод JCache::setWorkarounds($data,$options=array()) подготавливает данные, которые будут сохранены в кэше вместе с обходными решениями, и принимает следующие опции:

  • nopathway - не сохранять pathway данные
  • nohead - не сохранять header данные
  • nomodules - не сохранять данные модуля
  • modulemode - если nohead равно 0, не сохранять следующие данные модуля: title , description , link , metaTags

getWorkarounds

Метод JCache::getWorkarounds($data,$options=array()) применяет обходные решения над данными, сохраненными с обходными решениями. Он воссоздаёт header, pathway и модули и возвращает основные сохраненные данные. Работает автоматически - конкретное обходное решение выполняется, только если его данные были сохранены отдельно.

Разница в использовании кэша обратного вызова и raw-кэша

Обычно при разработке компонента вполне достаточно кэша представления, в особенности это касается простых компонентов. Но если компонент создает контент на лету, то лучше всего выбрать другой тип кэша. В такой ситуации будет удобен кэш обратного вызова или raw-кэш.

Кэш обратного вызова функции вернет в точности тот же результат, который бы вернула незакешированная функция, только этот результат будет закэширован. Непосредственно функция будет вызвана только при первом обращении к ней.

Мы вызываем кэширование при помощи JFactory::getCache() , и если мы используем кэш обратного вызова, наш код должен выглядеть следующим образом:

$cache = JFactory::getCache("somegroup"); $result = $cache->get(array("someclass", "somemethod"), $methodparams, $id, $workarounds, $workaroundoptions);

Последние три параметра в методе get() являются необязательными.

Обратите внимание на то, что этот не тот же метод get() , который мы используем в raw-cache. Кэш обратного вызова автоматически получает данные, если они существуют. Если их нет, то он выполняет обратный вызов, возвращает данные из обратного вызова и сохраняет их до следующего вызова. У кэша обратного вызова не существует метода store() !

При использовании raw-кэша у разработчика есть прямой доступ к методам get() и store() , и за логику ответственен непосредственно разработчик. Этот кэш удобен, когда необходимо сохранить информацию, но не вызов функции (например: xml-данные, картинки, описание товаров и т.п.), или когда необходимо передать большой объем данных из одной страницы на другую.

Ниже приведен код использования raw-кэша:

$cache = JFactory::getCache("somegroup", ""); if (!$somevariable = $cache->get("cacheId")) { // выполняем действия и сохраняем результат в $somevariable // сохраняем $somevariable в кэше $cache->store($somevariable, "cacheId"); }

Чтобы использовать raw-кэш, в качестве второго параметра метода getCache() мы должны передать пустую строку.

Что случится, если несколько кэшей будут работать одновременно?

Типы кэшей работают как непрозрачные слои друг над другом (исключая кэш модуля / представления компонента, который работает параллельно). Чтобы это понять, мы должны представить, что смотрим на веб-страницу сверху, где кэш страницы представляет верхний уровень, в то время как кэш обратного вызова, выходных данных и raw-кэш представляют нижний уровень. Получается, что верхние уровни перекрывают нижние, и например, при использовании кэша страницы весь остальной кэш перестает действовать.

Но есть исключение, когда мы используем разное время для разных типов кэша. Например, мы можем кэшировать страницы в течение короткого промежутка времени и кэшировать изображения в течение долгого. В таком случае, при рендеринге страницы изображение будет вытягиваться из кэша.

Обработчики кэша

Обработчики кэша - это чернорабочие. Именно они выполняют всю черновую работу и сохраняют информацию на выбранном медиа. Для использования кэша должен быть доступен хотя бы один обработчик кэша.

В CMS Joomla имеется возможность кэширования материалов, что позволяет снизить количество запросов к базе данных, а следовательно - ускорить время генерации страниц и сократить нагрузку на сервер. Это особенно важно для сайтов с высокой посещаемостью.

Принцип работы примерно следующий: при первом обращении к материалу, он не только генерируется и передается в браузер пользователя, который его запросил, но и сохраняется в определенной папке Вашего сайта(папке кэша) . При следующем обращении к тому же материалу, он уже не будет заново генерироваться, забирая ресурсы сервера, а просто возьмется из кэша.

Назревает вопрос: "А как же тогда обстоит дело с обновлением сайта? Ведь пользователь не заметит изменений, которые мы внесли, т.к. ему отображается устаревшая информация из кэша?"

Именно так. Пользователь увидит внесенные изменения только через определенное время, которое называется временем кэширования . Это то время, в течение которого хранится закэшированная информация. Затем она удаляется, и кэшируется заново.

Очень важно правильно выбрать время жизни кэша. Ключевым фактором здесь является периодичность обновления информации. Если, к примеру, Вы обновляете информацию на сайте один раз в день, то разумно будет поставить время кэширования чуть меньше 24 часов, например - 22 часа(1320 мин). За оставшиеся пару часов, вполне можно успеть обновить материалы.

Если вносите изменения один раз в два дня - ставьте время 46часов(2760 мин). В общем, думаю смысл понятен.

Если вдруг понадобилось сделать внеплановое обновление, и нужно, чтобы изменения сразу вступили в силу - можно просто очистить кэш вручную.

Для включения кэширования идем в панель администратора, выбираем пункт САЙТ - ОБЩИЕ НАСТРОЙКИ - СИСТЕМА. В правой стороне можно наблюдать установки кэша.

Ставим радиопереключатель на "Да" и задаем время кэширования. Не забываем нажать на кнопку "Сохранить", чтобы изменения вступили в силу:)

В данном случае, мы задали т.н. глобальные параметры, т.е. включили кэширование для всего сайта. Однако для некоторых модулей, лучше вообще его не использовать. Это могут быть модули, выводящие частообновляющуюся информацию, например, новости, погоду, и.т.п.

Идем в РАСШИРЕНИЯ - МЕНЕДЖЕР МОДУЛЕЙ - кликаем по нужному, и попадаем в настройки. Нас интересует пункт Параметры(справа).

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

Для ручной очистки кэша, идем в ИНСТРУМЕНТЫ - ОЧИСТИТЬ КЭШ

Резюме: технология кэширования, может значительно ускорить Joomla - сайт и повысить его производительность. При использовании данной технологии, может возникнуть ситуация, когда посетитель видит обновления на сайте с определенной задержкой. Чтобы этого не случилось, нужно правильно выбирать время кэширования. Главный критерий выбора этого времени - периодичность обновления сайта. Для некоторых модулей, например, различных информеров, лучше вообще отключить кэширование.

Как оптимизировать Joomla 3, чтобы увеличить производительность? Мы знаем, что скорость загрузки почти самый важный фактор для успешной работы Вашего сайта. По умолчанию, Joomla не является медленной CMS, но Вы можете сделать несколько оптимизаций, чтобы увеличить скорость работы. Здесь Вы найдете несколько советов, которые сможете применить для ускорения работы Joomla 3. Вот несколько действий, которые помогут Вам легко ускорить работу Joomla:

1) Всегда используйте только последние версии Joomla и Расширений

Пользоваться последней версией Joomla важно для скорости работы сайта, потому что в каждой версии сделано много улучшений программного кода. Даже если изменения незначительны, все равно новая версия Joomla более производительная, чем предыдущие. Чтобы подробнее узнать о том, как обновить Joomla до последней версии, читайте в нашем руководстве про безопасность .

Пользоваться последними версиями расширений так же важно для быстрой работы сайта, как и для самой Joomla.

2) Включите кэширование

Если выключено кэширование, то каждый раз, когда посетители сайта загружают одну из страниц, Джумле приходится выполнять сразу несколько действий: подгружать контент из базы данных, загружать установленные плагины, компоненты и модули, загружать Ваш шаблон и совмещать все это в одной единственной странице. Нет необходимости говорить о том, что этот процесс занимает время. Вот, где нам поможет внутренняя система кэширования Joomla. Когда включено кэширование, посетитель однажды загрузил страницу, а результат вышеописанных действий сохранится. Тогда все последующие посетители будут напрямую получать сохраненную версию этой страницы, как будто это простой HTML файл, который намного-намного легче и быстрее загружается. Вот почему кэширование один важных процессов, который должен быть включен, чтобы ускорить работу сайта.

Чтобы включить кэширование откройте Глобальные настройки (Система -> Общие настройки).

Затем надо нажать на вкладку Система , чтобы открыть настройки кэширование.

Ниже на странице мы увидим Настройки кэша. Нажмите на выпадающий список напротив надписи «Кэш». Выберите «Стандартное кэширование ». Есть еще вариант «Прогрессивное кэширование », но он работает немного по-другому: сохраняет кэшированную версию сайта для каждого посетителя. Это полезно в некоторых особых случаях и мы не рекомендуем использовать этот вариант, пока вы не будете абсолютно уверены в его необходимости.

После выбора режима кэширования, нажмите на кнопку «Сохранить » вверху страницы.

И последнее, что нужно сделать, чтобы система кэширования по-настоящему заработала – это включить плагин кэширования «Система – Кэш ». Для этого откройте Расширения -> Менеджер плагинов .

Здесь Вы видите огромный список установленных плагинов. Самый простой способ найти плагин кэширования – это воспользоваться поиском. Просто наберите в поле поиска слово «Кэш» и нажмите на кнопку с изображением лупы.

Рядом с надписью «Система – Кэш » Вы увидите кнопку с изображением красного креста, который показывает, что плагин в данный момент не активный. Чтобы изменить его статус нажмите на эту кнопку.

На кнопке появится изображение зеленой галочки, а вверху страницы Вы увидите сообщение, что плагин включен.

Вот и все! Теперь Ваша система кэширования Joomla включена и работает!

2) Используйте сжатие

Еще одна вещь, которая намного увеличит производительность Joomla – это сжатие. Если включить внутреннюю компрессию, то страница, которую открывают посетители сайта, будет сжиматься до того как она у них отобразится. Если уменьшить размер вебстраницы с помощью компрессии, она загрузится намного быстрее. Чтобы включить сжатие в Joomla, нужно зайти в Общие настройки (Система -> Общие настройки ).

На этой странице Вы увидите множество настроек. Нажмите на вкладку «Сервер », чтобы отобразить серверные настройки.

Найдите надпись «Gzip-сжатие страниц » и нажмите на кнопку «Да », чтобы включить сжатие Joomla.

Вы увидите, что индикатор стал зеленый, и он указывает, что сжатие включено. В завершение, нажмите кнопку «Сохранить», чтобы подтвердить изменения.

Ну вот, сжатие Joomla 3 включено. Для проверки сжатия страниц можно воспользоваться одним из многих бесплатных сайтов, например http://checkgzipcompression.com . Если все сделано правильно, то Вы увидите уведомление о том, что сжатие включено, а также немного информации о размере страниц. Как видно на картинке внизу, размер страницы нашего тестового сайта уменьшился в три раза.

Замечание

В некоторых случаях включение компрессии может вызывать ошибку. Вероятная причина в том, что «Gzip-сжатие» не установлено либо неправильно настроен сервер. Последнее можно узнать у службы технической поддержки Вашего хостинга.

3) Добавьте правила для оптимизации.htaccess

Htaccess содержит указания для вебсерверов, что делать с Вашим сайтом. Вот несколько правил, которые можно добавить в него, чтобы увеличить производительность Joomla:

ETag – указывает браузерам, что можно загружать из своего кэша изображение, которое уже отобразилось.

Expires headers – правило похоже на ETag, но позволяет устанавливать время жизни для разных типов файлов.

AddOutputFilterByType DEFLATE – уменьшает строчки кода скомпилированных HTML файлов, удаляя пустые строки, переходы и пробелы.

########## Begin - ETag Optimization

## This rule will create an ETag for files based only on the modification

## timestamp and their size.

## Note: It may cause problems on your server and you may need to remove it

FileETag MTime Size

# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.

AddOutputFilterByType

DEFLATE text/plain text/html text/xml text/css application/xml

application/xhtml+xml application/rss+xml application/javascript

application/x-javascript

# Enable expiration control

ExpiresActive On

# Default expiration: 1 hour after request

ExpiresDefault "now plus 1 hour"

# CSS and JS expiration: 1 week after request

ExpiresByType text/css "now plus 1 week"

ExpiresByType application/javascript "now plus 1 week"

ExpiresByType application/x-javascript "now plus 1 week"

# Image files expiration: 1 month after request

ExpiresByType image/bmp "now plus 1 month"

ExpiresByType image/gif "now plus 1 month"

ExpiresByType image/jpeg "now plus 1 month"

ExpiresByType image/jp2 "now plus 1 month"

ExpiresByType image/pipeg "now plus 1 month"

ExpiresByType image/png "now plus 1 month"

ExpiresByType image/svg+xml "now plus 1 month"

ExpiresByType image/tiff "now plus 1 month"

ExpiresByType image/vnd.microsoft.icon "now plus 1 month"

ExpiresByType image/x-icon "now plus 1 month"

ExpiresByType image/ico "now plus 1 month"

ExpiresByType image/icon "now plus 1 month"

ExpiresByType text/ico "now plus 1 month"

ExpiresByType application/ico "now plus 1 month"

ExpiresByType image/vnd.wap.wbmp "now plus 1 month"

ExpiresByType application/vnd.wap.wbxml "now plus 1 month"

ExpiresByType application/smil "now plus 1 month"

# Audio files expiration: 1 month after request

ExpiresByType audio/basic "now plus 1 month"

ExpiresByType audio/mid "now plus 1 month"

ExpiresByType audio/midi "now plus 1 month"

ExpiresByType audio/mpeg "now plus 1 month"

ExpiresByType audio/x-aiff "now plus 1 month"

ExpiresByType audio/x-mpegurl "now plus 1 month"

ExpiresByType audio/x-pn-realaudio "now plus 1 month"

ExpiresByType audio/x-wav "now plus 1 month"

# Movie files expiration: 1 month after request

ExpiresByType application/x-shockwave-flash "now plus 1 month"

ExpiresByType x-world/x-vrml "now plus 1 month"

ExpiresByType video/x-msvideo "now plus 1 month"

ExpiresByType video/mpeg "now plus 1 month"

ExpiresByType video/mp4 "now plus 1 month"

ExpiresByType video/quicktime "now plus 1 month"

ExpiresByType video/x-la-asf "now plus 1 month"

ExpiresByType video/x-ms-asf "now plus 1 month"

4) Уменьшите размер изображений

Изображения занимают большую часть Вашего сайта. В большинстве случаев они могут быть оптимизированы. Вот несколько советов, которым можно следовать при использовании изображений на сайте:

  • Никогда не используйте большие изображения, уменьшая их с помощью HTML. Браузеру требуется время, чтобы их обработать и качество изображения будет хуже оригинала.
  • Всегда оптимизируйте изображения. Такие приложения, как Adobe Photoshop или онлайн сервис Smush It, могут с помощью своих инструментов легко уменьшить размер картинки без потери качества.
  • Не добавляйте слишком много изображений на одну страницу. Если у Вас в статье много фотографий, попробуйте разбить ее на страницы.

5) Удалите неиспользуемые и неоптимизированные расширения

Каждое расширение Joomla, которое Вы устанавливаете, для работы требует системные ресурсы, место в базе данных и дисковое пространство. Наличие большого количества расширений увеличивают общий размер сайта и замедляют его работу. Вот почему важно убедиться в том, что у Вас установлены только необходимые расширения.

Многие часто проверяют всевозможные плагины, компоненты и модули, забывая при этом их удалять. Хорошо бы, иногда избавляться от таких расширений, которые могут добавить ненужный контент на сайт.

Последнее, но не менее важное: при выборе наиболее подходящего по функциональности расширения, которое хотите добавить, всегда смотрите отзывы пользователей. Некоторые компоненты написаны крайне неудачно, что может негативно повлиять на производительность сайта в целом.

6) Используйте расширения для оптимизации

Существует много расширений, которые пытаются увеличить производительность сайта. Полагаясь на многолетний опыт работы с Joomla, вот небольшая подборка, которую мы Вам порекомендуем:

  • JCH Optimize – комбинирует JavaScript & CSS, объединяет изображения в спрайты, уменьшает и сжимает JavaScript. Платная JCH Optimize PRO версия есть в нашей складчине.
  • Jbetolo – все, что умеет JCH Optimize плюс еще поддержка CDN
  • JotCache – улучшает систему кэширования в Joomla
  • Cache Cleaner – просто чистит кэш из панели администрирования Joomla

Функционал Joomla предоставляет возможность увеличить скорость загрузки сайта за счет обеспечения кэширования данных на сервере, о настройке которого поговорим в данном материале.

Что такое серверное кэширование?

Сайты на CMS Joomla являются динамическими: перед тем, как отобразиться в браузере, веб-страница формируется через взаимодействие PHP-кода с базой данных. Это предполагает огромное множество действий со стороны сервера, скорость выполнения которых может сильно падать, если к сайту одновременно выполняется много запросов (большое количество пользователей в единицу времени), в результате чего время загрузки страниц сайта может сильно возрастать.

Облегчить работу сервера как раз позволяет серверное кэширование: веб-страницы целиком или частично в виде конечного HTML-кода будут сохраняться на сервере в виде временных файлов (кэша) после генерации и отдаваться при запросах пользователями.

Виды кэширования в Joomla 3

Джумла предусматривает 3 вида кэширования данных на сервере:

Теперь о каждом по порядку.

Стандартный уровень кэширования

Обеспечивает создание файлов кэша для всех элементов веб-страниц, в том числе модулей, в настройках которых не отключено кэширование. Подойдёт для любого сайта.

Прогрессивный уровень кэширования

Аналогично стандартному, за исключением того, что все модули будут кэшироваться в один файл, независимо от их индивидуальных настроек. Такой вариант не подходит для сайтов с динамическими модулями, контент которых может меняться в зависимости от действий пользователей (например, модуль виртуальной корзины).

Кэширование страниц

Такой вариант предполагает сохранение конечных копий веб-страниц целиком, в том числе компонентов. Этот тип кэширования самый эффективный в отношении скорости загрузки и подойдёт для большинства лэндингов, но не для сайтов с постоянно обновляющимся контетом.

Настройка кэширования в Joomla 3

Поговорим о том, как активировать и настроить серверное кэширование.

Настройка стандартного или прогрессивного кэширования

  1. Система Общие настройки
  2. вкладка Система
  3. раздел Настройки кэша
  4. Обработчик кэширования

    Если на сервере активированы прекомпиляторы для обработки кэша, они будут в выпадающем списке. Если выбор отсутствует или вызывает затруднение, выберите значение Файл .

  5. Путь к каталогу кэша

    Если не заполнять, то все временные файлы будут храниться в папке /cache/

  6. Время кэширования

    Подразумевает время хранения временных файлов в минутах. Рекомендуем выставлять значение, равное приблизительной частоте обновления контента на сайте, но не более 1440 минут (одних суток) во избежание каких бы то ни было проблем.

  7. Специфическое кэширование для платформы

    Следует активировать, когда код веб-страниц отличается в зависимости от устройства вывода (например, для мобильных устройств применяется иная вёрстка).

  8. Системный кэш

    Собственно, эта опция и определяет тип кэширования (стандартный или прогрессивный).

  9. по окончанию настройки жмем Сохранить или Сохранить и закрыть

Настройка кэширования страниц

Эта функция активируется посредством системного плагина , при этом в Общих настройках сайта (вкладка Система , раздел Настройки кэша ) должно быть указано Время кэширования .

  1. Расширения Плагины
  2. плагин Система - Кэш
  3. состояние Включено

Настройки плагина позволяют активировать кэширование в браузере (не рекомендуется включать, т. к. в таком случае вся страница, в том числе HTML-код, будет храниться в браузере и отображаться независимо от внесенных на сайте изменений), а также исключать кэширование отдельных страниц по пунктам меню и URL-адресам.

Очистка серверного кэша в Joomla 3

При изменениях на страницах сайтах до истечения срока действия файлов кэша потребуется их своевременное удаление. Для этого в Джумле предусмотрена стандартная функция:

  1. Система Очистить весь кэш

    Для удаления всех временных файлов

  2. Система Очистить устаревший кэш

    Для удаления просроченных файлов кэша.