What is difference between conservative caching and progressive caching in joomla 2.5? What is difference between conservative caching and progressive caching in joomla 2.5? php php

What is difference between conservative caching and progressive caching in joomla 2.5?


Conservative caching is the standard type of caching. Here’s how it works:

  • A visitor visits a page on your website.

  • Joomla checks if there is a non-expired version of that page in its cache directory.

  • If the cached page exists (and it’s not expired), then Joomla will serve it to the visitor – otherwise, a cached version of the page is created, and that cached version will be served to the visitor, and to every other consequent visitor, as long as it’s (by “it” we mean the page) not expired.

The above scenario is typical and is how most developers implement caching.

Progressive caching works the following way:

  • A visitor visits a page on your website.

  • Joomla checks if a cached version of that page exists for that visitor and it’s not yet expired.

  • If that cached page exists, then it’ll be served to the visitor, otherwise, Joomla will create the cached page for that specific visitor and then will serve it to him.

  • If another visitor (who has never been on that page) visits that page, then Joomla will not serve the cached page of the previous visitor, instead, it will create a cached version of that page
    specifically for that user, and then serves it to him.

As you can see, progressive caching only offers a performance improvement if the same visitor visits the same page within the lifetime of the cached version of the page. In most scenarios, progressive caching results in a huge performance hit that is far worse than disabling cache, simply because for nearly every visit, Joomla has to process the request, create the cached version of the page, and then serve the page to the visitor (instead of just processing the request and serving the page in the scenario where cache is disabled). Oh, and don’t forget about all the cache files generated by Joomla – you can only imagine how many of these files you will have in your cache folder if you have a high traffic news website (that has many pages).

Now you might wonder, under which circumstances is progressive caching useful? Well, imagine that you have a video website (similar to youtube). You want to show each visitor customized pages based on his location and/or browser settings and/or plugins installed. So, for every page that the visitors loads, you use this information to generate a customized version of that page and you cache it. If the visitor visits that same page again, then Joomla doesn’t need to redo the work to generate the customized page.

Of course, there are many scenarios under which progressive caching is really useful, but in our opinion, progressive caching should only be considered if the website receives many visitors and if those visitors are mostly repeat visitors. Using it in other cases will cause a significant hit on the website’s performance.

Extracted from here.


For Unique cache per visitor

  • Conservative cache shows all visitors to your site the same exact cached content.

  • Progressive caching however caches the content for each user uniquely.

From the link Provided by @Tornado's comment


Progressive caching works just like conservative caching with a difference that buffers are updated progressively.

If you look at the render function in JApplicationCMS (where progressive caching is set), you will find that its not applicable to logged in users.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;    }

Further if you dump the cache id's for the same page across browsers or ips you will get the same cache id's.

The typical work of progressive caching happens in JCache's getWorkarounds and setWorkarounds. However beware, the cbuffers can get unwieldy large at times causing issues.