В чем разница между консервативным кешированием и прогрессивным кешированием в joomla 2.5?

В Global Config в joomla есть 2 кеширования – это консервативный и прогрессивный, в чем разница?

    Консервативное кэширование является стандартным типом кэширования. Вот как это работает:

    • Посетитель посещает страницу вашего сайта.

    • Joomla проверяет, есть ли в своей папке кеширования версия с истекшим сроком действия этой страницы.

    • Если кешированная страница существует (и она не истекла), то Joomla будет обслуживать ее посетителю – иначе будет создана кэшированная версия страницы, и эта кешированная версия будет отправлена ​​посетителю и каждому другому последующему посетителю, до тех пор, пока это (под «это» мы понимаем страницу), не истекли.

    Вышеприведенный сценарий типичен и как большинство разработчиков реализуют кэширование.

    Прогрессивное кэширование работает следующим образом:

    • Посетитель посещает страницу вашего сайта.

    • Joomla проверяет, существует ли кешированная версия этой страницы для этого посетителя, и она еще не истекла.

    • Если эта кешированная страница существует, она будет отправлена ​​посетителю, иначе Joomla создаст кэшированную страницу для этого конкретного посетителя, а затем подаст ее ему.

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

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

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

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

    Извлечен.

    Для уникального кеша на посетителя

    • Консервативный кеш показывает всем посетителям вашего сайта то же самое точное кэшированное содержимое.

    • Однако прогрессивное кэширование кэширует контент для каждого пользователя уникально.

    Из ссылки Предоставлено комментарием @ Tornado

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

    Если вы посмотрите на функцию рендеринга в JApplicationCMS (где установлено прогрессивное кэширование), вы обнаружите, что она не применима к зарегистрированным пользователям. https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/application/cms.php

    if ($this->isSite() && $this->get('caching') && $this->get('caching', 2) == 2 && !JFactory::getUser()->get('id')) { $caching = true; } 

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

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