Плагин кэширования joomla.  Кэширование в Joomla. Снимаем нагрузку с сервера. Стандартный уровень кэширования

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

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

Но обо всем по порядку.

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

Так вот, у меня есть сайт тоже на Joomla, посещаемость которого с августа по ноябрь увеличилась на треть и сейчас в среднем составляет 15 000 посетителей в сутки. Этот сайт крутится на виртуальном сервере (VPS) на хостинге reg.ru на тарифном плане VPS-3. Этот VPS оснащен процессором 2х2000 Мгц и оперативной памятью в 1024Гб. Хостинг очень хороший и стабильный, я про него думаю написать отдельную статью. Так вот в последний месяц из-за резкого увеличения посещаемости мне на почту стали периодически (по несколько раз в день) приходить уведомления о нехватке оперативной памяти на моем VPS. Меня конечно эти уведомления напрягали, но так как сайт при этом продолжал нормально открываться, то я откладывал решение данной проблемы. Неделю назад сайт во время уведомлений о нехватке памяти начинал жутко тормозить. А затем в один прекрасный день сайт все таки перестал открываться совсем по причине того, что упал сервер баз данных MySQL из-за нехватки оперативной памяти. Я его конечно тут же стартовал из панели ISP менеджера. В итоге с момента падения SQL сервера и до момента как я это заметил и стартовал сервер MySQL сервер прошло примерно тридцать минут. Заняться сайтом в этот день у меня так и не получилось, а вечером я пришел домой усталый и решил отложить все на следующий день. Уже глубоким вечером, опасаясь, что mySQL сервер ночью снова может упасть, и сайт может до самого утра, пока я сплю, не работать, я подключил платный мониторинг сайта. Этот мониторинг отслеживает работоспособность сайта и как только он падает, высылает SMS на телефон о падении сайта. Данная услуга на сайте reg-ru стоит всего 100 руб/мес. Перед сном я положил телефон поближе, чтобы услышать SMS-ку. После полуночи все таки пришла эта SMS, оповещающая о том, что сайт снова не работал. Я быстро вскочил, включил ноутбук и запустил упавший процесс sqld, отвечающий за работу сервера баз данных mySQL. На этот раз сайт не работал всего лишь около 5 минут. Столько времени мне понадобилось, чтобы встать, включить ноутбук, зайти в ISP панель управления хостингом и запустить упавший процесс. Конечно же у меня весь сон улетучился, и я стал думать, как решить проблему с нехваткой памяти. У меня было два решения:

  1. перейти на более дорогой тариф VPS-4, на котором в два раза больше памяти (2048 МБ);
  2. попытаться оптимизировать работу сайта.

Кстати вот перечень всех тарифов на VPS сервера (можете кликнуть для получения более подробной информации):

Тариф VPS-4 стоит в два раза дороже. Подумав, что перейти на более дорогой тариф я могу в любое время, я решил все таки сначала попробовать оптимизировать сайт. Я являюсь владельцем VPS сервера, и мне доступны любые его настройки.

Благо, в настройках сервера мне копаться не пришлось, т.к. первое, на что я решил обратить внимание при оптимизации - это посмотреть как обстоят дела с кэшированием на моем сайте. Оказывается на моем сайте не было включено кэширование. После включения кэширования в Joomla, потребление памяти на VPS сервере стало примерно в среднем 650-750 Мб. Уведомления о нехватке памяти мне перестали приходить, а страницы сайта стали открываться даже быстрее, чем раньше. Вот такая история.

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


Включаем кэширование в Joomla при помощи системного плагина.

Включить кэширование в Joomla можно двумя способами.

Первый способ это включение кэширования страниц сайта при помощи встроенного системного плагина.

В админке заходим в "Расширения " => "Менеджер плагинов " и ищем в списке плагин с названием "Система - Кэш ". Список плагинов на сайте может быть большим, поэтому для облегчения поиска отфильтруем список. Для этого слева в разделе "Фильтр " в поле "Выбор типа " выберем из выпадающего списка "System ". Теперь наши список плагинов выводит только системные плагины, среди которых легко отыскать наш плагин "Система - Кэш ".



Включаем данный плагин.

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

Плагин все кэшированные странички хранит в папке корень_сайта\cache\page\.

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

У меня под каждую страницу сайта в кэше создается отдельный файл размером примерно 50-90 килобайта. Поэтому, если даже на сайте будет тысяча страниц, то папка с кэшем будет размером менее 100 мегабайт.

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

У этого плагина есть дополнительная настройка "Использовать кэширование в браузере", но ее я вам включать не советую, и сейчас я объясню почему. Работает она следующим образом. Если эта настройка включена, то браузер при открытии любой страницы сайта будет дополнительно сохранять ее у себя в кэше на компьютере. В дальнейшем, когда этот браузер повторно обратиться к серверу с запросом этой же странички, то в HTTP ответе сервера всегда будет присутствовать заголовок “304 Not Modiifed”, которая говорит браузеру, что запрашиваемая страничка не изменилась на сервере и браузер может взять ее из своего кэша, если страничка сохранена в кэше (а браузеры по умолчанию настроены на сохранение страниц в кэше, если им это разрешает делать сервер). Но здесь нюанс в том, что сервер будет говорить браузеру о том, что страничка не изменилась на сервере даже в том случае, когда на сервере уже давно появилась обновленная закэшированная копия данной странички. Т.е. это означает, что браузер всегда будет обращаться к своей локально сохраненной версии странички и уже никогда не увидит изменений. Для того чтобы все таки заставить браузер загрузить актуальную версию страницы нужно будет зайти в настройки браузера и очистить локальный кэш браузера. Т.е. эта настройка нужна только для каких то совсем уж специфических сайтов, которые никогда не обновляются.


Как же узнать время, в течении которого на сервере будет храниться кэшированная копия странички. Время кэширования настраивается в совершенно другом разделе админки: "Общие настройки " (Global Configuration ) => "Система " (System ) => поле "Время кэширования " (указывается в минутах) в разделе "Настройки кэша " (Cache Settings ). Это поле регулирует время кэширования для всех способов кэширования, доступных в Joomla.


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

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

Включаем кэширование в Joomla при помощи стандартного и прогрессивного кэширования.

Общие настройки " (Global Configuration ) => далее переходим во вкладку "Система " (System ) => находим раздел "Настройки кэша " (Cache Settings ) => напротив поля "Кэш" (Cache ) выбираем из выпадающего списка "Стандартное кэширование " (Conservative caching ) или "Прогрессивное кэширование " (Progressive caching ).

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

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

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

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

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

Теперь возникает резонный вопрос: чем отличается стандартное кэширование (Conservative caching ) от прогрессивного кэширования (Progressive caching ).

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

Для этого в админке заходим в "Расширения " => "Менеджер модулей " => открываем необходимый нам модуль => Далее переходим во вкладку "Дополнительные параметры ". Здесь мы можем изменить время кэширования модуля изменив время кэширования в секундах в поле "Срок кэширования ". По умолчанию там стоит значение 900 секунд (т.е. 15 минут) или вовсе отключить кэширование модуля выбрав в поле "Кэширование " значение "Не кэшировать ".


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

Прогрессивное кэширование кэширует страницы отдельно для каждого индивидуального посетителя. Т.е. пришел посетитель User-A на сайт => Joomla проверяет свой кэш на наличие персональной (именно для посетителя User-A) кэшированной страницы => если в кэше такая страница отсутствует (или она устарела), то Joomla создает обращение к базе с запросом необходимых данных, вставляет эти данные в используемый шаблон, добавляет содержимое модулей и компонентов, которые присутствуют на странице (короче Joomla формирует страничку для посетителя), сохраняет сформированную для User-A страничку в кэше и выдает HTML версию страницы в браузер посетителя User-A.

Далее пришел на эту же страничку посетитель User-B => Joomla роверяет свой кэш на наличие персональной (именно для посетителя User-B) кэшированной страницы => Joomla обнаруживает в своем кэше только страницу для пользователя User-A => Joomla не выдает в браузер пользователя User-B страницу, кэшированную для пользователя User-A, а формирует для User-B новую страницу, сохраняет ее в кэше и после этого выдает ее в браузер посетителя User-B.

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

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

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

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

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

Очищаем кэш в Джумле.

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

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

Для этого в административной панели заходим в "Система " => "Очистить весь кэш ".

Выбираем все и нажимаем кнопку "Удалить ".

Решения сторонних разработчиков для кэширования сайта.

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

  • позволяет исключить из кэширования отдельные страницы и модули;
  • для экономии места на диске есть возможность настроить автоматическое удаление устаревшего кэша (в 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, в отличие от стандартной системы кэширования, позволяет весьма тонко настроить кэш Джумла, добившись увеличения производительности, снижения нагрузки на сервер и сохранив функциональность и внешний вид сайта. Отмечу, что для проектов, где применяется большое количество динамического контента, процесс настройки может быть непростым, потребует много времени и внимательного изучения документации. При более динамичном содержимом сайта менее заметный эффект от кэширования.

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

Функционал 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. Система Очистить устаревший кэш

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Затем вкладка «Система» и здесь есть настройки кэша. Сейчас у нас по умолчанию кэширование отключено. Чтобы его включить, нужно сначала выбрать стандартное или прогрессивное кэширование. Сразу скажу, что при прогрессивном кэшировании сайт будет работать быстрее, выбираем его. Обработчик - файл и время кэширования 15 минут.

Что такое кэширование? В течение 15 минут вас сайт не будет изменяться. Не будет каждый раз показываться новые улучшения сайта, только каждые 15 минут. Поэтому выбирая это время, смотрите, насколько часто ваш сайт обновляется. Если у вас какой-то новостной портал, который должен обновляться каждые 5 минут, вы ставите кэширование меньше. Если у вас обыкновенный сайт, то 15 минут это будет оптимальный вариант.

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

Для этого есть специальный встроенный сервис, чтобы удалять кэш и чтобы изменения, которые вы сделаете на сайте были видны сразу же. Это «Обслуживание» - «Очистить весь кэш» и «Очистить устаревший кэш».

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

Есть такой интересный сайт, как http://www.nonumber.nl/. Это разработчик расширений для Joomla, у него много бесплатных расширений. Перейдем на Extensions и найдем здесь Cache Cleaner .

Есть два варианта - бесплатно скачать или купить за 10 евро. Мы скачиваем бесплатный.

Затем переходим в административную панель и его установим. Установилось все нормально и сразу предупреждение: «Пожалуйста, очистите кэш вашего Интернет-обозревателя». Потом необходимо включить этот плагин в «Менеджер плагинов.

Давайте разберем настройки. «Автоочистка при сохранении» - если мы сохраняем какое-то изменение на сайте, у нас автоматически будет удаляться кэш. Есть «Панель управления», разрешить это делать или уведомлять. Также на «Лицевой части сайта» мы можем разрешить и уведомлять, тоже самое. «Очищать при действии». Когда очищать кэш, когда мы сохраняем, когда мы применяем - save, apply . То есть нам не нужно будет каждый раз удалять кэш, он будет автоматически удаляться.

Также «Очистка других каталогов» - tmp . Если мы загружаем расширение через папку tmp, также она будет очищаться. И «Автоочистка при сохранении» только на версии PRO, каталоги например. Тоже «Очистка таблиц и базы данных», только PRO. Если нам это очень сильно нужно мы покупаем PRO за 10 евро. Дополнительные параметры: «Отображение размера кэша» - будет показываться размер кэша.

И после сохранения появляется такая кнопка «Очистить кэш». Можем сами нажимать на нее и будет нам показываться сколько Кб кэша удалили или мы можем настроить не показывать ее. Если на «Лицевая часть сайта» ставим «нет», то показываться не будет.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: