Joomla имеет несколько вариантов кэширования контента: Системный кэш: Отключено; Стандартное кэширование; Прогрессивное кэширование; и плагин Система - Кэш (system / cache).
Начнём с настроек
Первые три варианта Системный кэш:
- Отключено;
- Стандартное кэширование (оригин.: Conservative Caching, Консервативное кэширование);
- Прогрессивное кэширование.
Расположены в Общие настройки - Система - Параметры кэша, по адресу /administrator/index.php?option=com_config, где также можно выбрать:
- Обработчик кэша
- Путь к каталогу кэша
- Срок кэширования
В подсказке к Срок кэширования говорится:
Введите максимальное время жизни файлов кэша (в минутах). По истечении времени кэш будет обновлен.
...кэш будет обновлен
, - но, каким именно образом кэш будет обновлен - не уточняется:
- будет сохранён старый кэш и к нему добавится новый?
- будет удалён старый и будет создан новый кэш?
- будет обновлён файл кэша для страницы конкретного веб-адреса?
Ответ на этот вопрос в подсказках к настройкам мы нигде не найдём.
А опираясь только на наличие одного лишь пункта меню Система - Очистить устаревший кэш (/administrator/index.php?option=com_cache&view=purge):
Предупреждение
Очистка устаревшего кэша может привести к увеличению нагрузки на сервер на тех сайтах, где хранится большое количество элементов.
Для очистки устаревших групп и файлов кэша нажмите кнопку Очистить устаревший кэш на панели инструментов.
Внимание! Действующие файлы кэша не будут удалены.
Можно сделать вполне обоснованное предположение, что старый кэш сохраняется и к нему добавляется новый.., но это не точно...
Теперь на минуточку сделаем паузу и вспомним про Эти добрые люди...
, которые:
- делали сам движок;
- переводили название настроек и подсказки к ним;
- писали оф. документацию;
- и всех остальных иже с ними...
– Эти добрые люди, –... «Мастер и Маргарита»
– Эти добрые люди ничему не учились и все перепутали, что я говорил. Я вообще начинаю опасаться, что путаница эта будет продолжаться очень долгое время. И все из-за того, что он неверно записывает за мной. (С) Иешуа
Кто, где, что, первый неправильно написал, неправильно перевёл.., и как на самом деле оно то всё работает, - та сразу толком можно и не понять!
Кроме всего выше перечисленного там, где-то там.., среди плагинов есть некий таинственный плагин Система - Кэш (system / cache), который в оригинале именуется ака Page Cache, а не Система - Кэш.
И в основных настройках у нас Системный кэш и какой-то плагин Система - Кэш - какой Кэш из них самый более Системный, не понятно!
Берёмся за лупу
Когда что-то недопонимаем, то обычно сразу же берёмся значит за лупу (ту.., что в поиск.строке вместо кнопки) и начинаем ею туда-сюда.., - шарить в Интернетах выискивая ответы, например по запросу:
А тааАааам... Ночь...
В числе прочего, попалось:
На что и попробуем сейчас обратить свой взор, где, чтобы долго не томить, выделим главное:
- Page Caching (ака плагин Система - Кэш) - кэширует полностью всю страницу целиком и кладёт на настройки срока жизни кэша, т.е. продолжает выдавать закэшированное после истечения срока (так там написано):
The cached page will continue to be served until it's expired – as defined by the Cache Time parameter in the Administrator → Global Configuration → System tab → Cache Settings.
Based on: URL - Conservative Caching - кэширует всё в отдельности (модули, компоненты, ...) с учётом настроек каждого из них если такие настройки в них присутствуют (в настройках модулей например):
Based on: URL, view, parameters, ... - ЭТО САМЫЙ СТРАШНЫЙ ВАРИАНТ - если какой-то компонент написан криво-рукожопым говнокодером и view, parameters, ... не проверяются на входе
Based on: the module id, the user's view levels and the Itemid parameter in the HTTP request - почти те же яйца, но вид сбоку - Progressive Caching - похоже на Conservative Caching с той разницей, что для всех гостей модули всегда закэшированы, т.е. кладёт на срок жизни и индивидуальные настройки кэша модулей
The functional difference between the two is that with Progressive Caching for logged-off users all modules are always cached.
Summary
Итак.., в конечном итоге...
Опытным путём установлено, что...
Если одновременно включить Системный кэш (на Стандартное/Прогрессивное кэширование) и плагин Система - Кэш (тут вспомним про Эти добрые люди...
), то спустя сутки работы можем получить такую вот картину:
$ sudo sh -c "du -shc /cache/*" 72K /cache/_system 20K /cache/com_contact 122M /cache/com_content 709M /cache/com_k2 500M /cache/com_k2_extended 20K /cache/com_languages 48K /cache/com_menus 420K /cache/com_modules 24K /cache/com_plugins 40K /cache/com_templates 24K /cache/fof 37M /cache/jw_sigpro 272K /cache/mod_articles_news 28K /cache/mod_custom 32K /cache/mod_k2_content 24K /cache/mod_k2_tools 140K /cache/mod_search 3.6G /cache/page 5.0G total
Как видим, /cache/page потянуло 3.6G, что почти в два раза больше, чем взяли дискового пространства com_k2 и com_k2_extended (исправленный) вместе взятые.
Примечательно, что дублей нигде не обнаружено:
$ sudo fdupes /cache/com_k2_extended/ $ sudo fdupes /cache/page/ $
Если включить только плагин Система - Кэш, то за сутки в /cache/page нарастает не так много, а кэш в остальных группах (каталогах) не создаётся.
Путём дедуктивного метода мышления мы можем прийти к тому выводу, что - это значит, что..? Правильно! Что если одновременно включен Системный кэш и плагин Система - Кэш, то в /cache/page попадает что-то ещё, а что именно ещё.., - это тайна покрытая м.раком...
Из вышеизложенного можно дать такую рекомендацию по выбору модели (варианта) кэширования для сайтов на движках Joomla:
- включать что-то одно, только плагин Система - Кэш (кэш всей страницы) или только Системный кэш (на Стандартное/Прогрессивное кэширование), а иначе диску жопа;
- Page Caching (он же плагин Система - Кэш) с точки зрения безопасности и экономии дискового пространства предпочтительнее, потому как
Based on: URL
(но это не точно); - если включено Стандартное кэширование и стремительно стало пропадать дисковое пространство, то значит в системе завёлся криво-рукожопый компонент и/или это только сейчас вскрылось в связи с атаками на отравление кэша путём подмены параметров, а оно (Стандартное/Прогрессивное кэширование)
Based on: URL, view, parameters ..., the module id, the user's view levels and the Itemid parameter in the HTTP request
и так далее.
Опять же.., достоверно неизвестно какие именно страницы кэширует Page Caching (ака плагин Система - Кэш), кэширует он все страницы сайта без исключения или только страницы с материалами?
Исчерпывающих же ответов на все вопросы про то, как именно работает Joomla кэш нам не даёт даже оф.документация (тут ещё раз вспомним про Эти добрые люди..
, которые что-то постоянно неправильно записывают или переводят), почитав которую возникает ещё больше вопросов!
А чтобы узнать больше деталей, подробностей и ответов, нужно брать акваланг, по-больше запасных баллонов с кислородом, и погружаться на самое днище этой большой кучи говнокода под названием Joomla кэш, - а это друзя мои, уже совсеЕем другая история.

