Showing posts with label evolved caching. Show all posts
Showing posts with label evolved caching. Show all posts

20 September 2020

Why choose Evolved Caching?

Hi everyone and welcome back to another edition of

the Hussey Coding blog.


Last week we revealed to the world that our extension for the Magento 1 platform, Evolved Caching, is now free for download. However, I know what you're thinking, "Just because it's free, doesn't mean it's worth it!"

In today's article, we'll task the question... 

Why choose Evolved Caching?
If you're on the search for a full-page caching solution for your Magento store you have probably seen a wide range of solutions with seemingly more on the way all the time. So why should you pick Evolved Caching over other solutions?

 

Evolved Caching offers not only the best performance in the market place, but it's also a significantly more advanced solution than competing products. In performance terms Evolved Caching is comparable to Varnish, meaning you are likely to achieve the same time to first byte (TTFB). If you want to use Varnish, then you can integrate directly and have both Varnish and Evolved Caching serve your cached pages. Evolved Caching will also allow Varnish to cache many more pages than other Varnish only extension solutions. PageCache powered by Varnish, for instance, stops serving cached content altogether as soon as you add a product into the cart.


Evolved Caching can achieve the same TTFB as Varnish because of how it serves cached content compared to other solutions. Most solutions pull the cached content then populate the cached page with dynamic data (i.e. mini cart, header links, etc.) before delivering anything to the browser. This means you'll have to enter the Magento framework to generate the cached content, which is always going to be slow! Why? Well, every time you do this, you'll need to run thousands of lines of code and execute a large number of database requests. This has a direct impact of how long it takes the server to deliver content to the browser and therefore your TTFB.


Evolved Caching is different because it delivers the cached content to the browser immediately giving an excellent TTFB. It then populates the page with dynamic content after it has been delivered to the browser. It can populate the page with dynamic content in 2 ways, either via an AJAX request or via BigPipe. It was the first solution to use AJAX, and the only solution to offer BigPipe as an option.


Whichever method you pick you are going to have the cached page content delivered to the browser quicker and therefore achieve a better TTFB. To give you an idea of how much faster Evolved Caching is, when looking at other solution demo's, we see the server taking around 30% of the time to generate HTML for each page (600ms without caching, 200ms with.) If you have a look at our benchmarks, you will see you are looking at less than 0.5% of the time to generate HTML for each page.


So performance and TTFB is one reason to implement Evolved Caching over other solutions, but, increased performance isn't the only benefit! Evolved Caching has a totally different approach to keeping the cache up to date. Many other solutions rely on a cache purge and crawl cycle to refresh the cache. This means that the entire cache is likely cleared and rebuilt on a daily, or a more regular interval. When making updates to your site's content you may not see those changes reflected until this cache purge and crawl cycle has been completed.


Evolved Caching is totally different in its approach.

The aim right from the start was to make it a hands-off solution that just works, keeping your cache always primed and up to date. Only the relevant cached pages are rebuilt, for instance, when saving a product, category or CMS page. It also caters for caching scenarios that other solutions don't like rebuilding the cache for time-limited, storewide design changes, applying to a product, category or CMS page. The same is true for other time-limited features such as special or limited product prices.


Basically once a cached page has been created, you should never have to delete it, and it should always be kept up to date automatically. However, should you find that you do need to clear your full page cache, Evolved Caching includes the functionality to crawl your site, creating a basic cache as a starting point. It also allows you to regenerate your entire cache in case you want to make a site-wide design change that affects every page like the header or footer.


Another reason to favour Evolved Caching over other solutions is the options it gives you in how you want to store your cached content. You can cache to files, APC, Memcached or Redis with memory-based cache storage being faster on average than files. Although some solutions offer different caching backends, many don't and only cache to files.


Evolved Caching was also developed to make it easy to configure for your install. Other solutions require some development knowledge to hole punch any but standard blocks from caching - so, you need to create an XML configuration file defining extra blocks to exclude. Evolved Caching instead provides a frontend URL helper argument, ?show names. Append this to any frontend URL and the block names will be displayed, just add any of these names into the extension config in admin and that's it - no development knowledge required! You can equally add in pages by URL to be excluded from caching from admin, i.e. cart, checkout, customer login area etc.

 

These things are really just touching the surface of what the extension can do compared to competing solutions and you can read a lot more in our documentation or you can get your FREE copy from our store at

https://store.husseycoding.co.uk/

 

or on GitHub at

github.com/husseycoding/evolvedcaching  

 

Thank you for joining us today, as always please consider liking, sharing and spreading the love on your favourite social media platforms using the #HusseyCoding. Until then, stay safe and have a great day.

You can also join all the fun on our various social media profiles
Facebook - facebook.com/husseycoding
Twitter - twitter.com/husseycoding
LinkedIn - linkedin.com/company/hussey-coding

Sign up to developer connection at www.developerconnection.co.uk
Facebook - facebook.com/DeveloperConnection
Twitter - twitter.com/devconnectionuk
LinkedIn - linkedin.com/company/developer-connection


13 September 2020

What is Evolved Caching?

Hi everyone and welcome back to another blog by

the Hussey Coding team


A few years ago Hussey Coding launched an extension for M1 called Evolved Caching. It is a performance-orientated, highly advanced, easily installed, full page caching solution and today we're going to take a look at it.

 
If you are one of the 240,000 people still using the Magento 1 platform, then this is the caching extension for you. Unlike alternative full page caching solutions, you don't need to be a developer to install and configure this extension. Evolved Caching combines incredible performance with impressive versatility, through easy backend configuration options, and provides simple installation which is unmatched by other full page caching solutions, giving you fast, dynamic content loading every single time!


Evolved Caching works out of the box with multi-store, multi-currency installs. It can also handle caching mobile stores running under the same domain as the main store by allowing you to cache by the user agent.

Configuring and updating of dynamic, user-specific content is made easy with URL helper arguments and simple admin configuration options, so you won't ever need to touch any code.


Compatible with Magento 1.4 and above, Evolved Caching will give your site a massive boost in performance, benchmarks show server processing times drop from 2650ms to just 10ms to generate the full page HTML, and still only 194ms after loading all dynamic content (which happens after page load via AJAX). Siege multiple concurrent user benchmarks show the server jump from just 10.39 transactions a second to 138.89 - well over 13 times as many.


You can read about the full capabilities of Evolved Caching, including in-depth usage and full benchmarks here

But, we've saved the best news till last, with Magento 1 seeing it's official support come to an end from Adobe, we at Hussey Coding have decided to make the Evolved Caching extension FREE for you to download.

You can get your FREE copy from our store at

https://store.husseycoding.co.uk/

 

or on GitHub at

github.com/husseycoding/evolvedcaching


Thank you as always for joining us today, we appreciate your readership! If you would like to contact us, then all of our details are below. Until then, stay safe and have a great day.

You can also join all the fun on our various social media profiles
Facebook - facebook.com/husseycoding
Twitter - twitter.com/husseycoding
LinkedIn - linkedin.com/company/hussey-coding

Sign up to developer connection at www.developerconnection.co.uk
Facebook - facebook.com/DeveloperConnection
Twitter - twitter.com/devconnectionuk
LinkedIn - linkedin.com/company/developer-connection

 

8 June 2016

Magento Varnish how to - part three


Part Three


Welcome back once again to the third and final part of this Magento Varnish mini series.  The first part discussed why you should be using Varnish on your store, the second part showed you some figures for the kind of performance benefit a Magento Varnish cache is likely to give, and this final part shows you just how straight forward it is to actually get a Magento Varnish cache up and running on your store by using the easy integration offered by Evolved Caching.

How do I setup a Magento Varnish cache?

 

Varnish cache can be a complex piece of software to setup and customise to your exact site requirements with the default configuration it ships with catering for some, but certainly nothing like all sites.  As discussed in part one of this series, it basically won't cache Magento's pages at all while running it's default configuration and so needs some work to allow it to cache correctly.

That's where Evolved Caching comes in.  While Evolved Caching is a highly performance driven, advanced Magento full page caching solution in it's own right, it also massively simplifies using Varnish to cache your store pages by way of it's caching key cookie.  This cookie contains a unique reference describing everything about each page, including data that is normally stored in the session.  The cookie is delivered to Varnish for every request, and so rather than caching only by URL - which is extremely limiting in the case of Magento, Varnish can then cache the full breadth of possible page variations Magento can generate, and this includes caching pages when products are in the cart, or the customer is logged in.

Evolved Caching takes care of everything related to adding dynamic content to the page, defining which pages should be cached (or not) and allows Varnish to just get on the with the job of serving super fast cached content.  You can also manage the Varnish cache from within admin including automatic cache clearing and warming of pages as they are updated.  Evolved Caching does all the hard work for you!

So how can you get a Magento Varnish cache for your store?  This is how to do it.

The easy integration is given by Evolved Caching so as a starting point you can grab your copy here and follow the quick setup guide to get running with that.  You also need a clean, unmodified install of Varnish and you can find full instructions here.

Once you have these basic requirements in place there are just three simple steps you need to follow to get your Magento Varnish cache.
  1. Use our vcl configuration file for either Varnish 4 or Varnish 3 in /etc/varnish/default.vcl on your server.
  2. Enable 'flush varnish cache' under the general options section of the Evolved Caching settings.
  3. Turn on 'enable cookie' under the caching key cookie section of the Evolved Caching settings.
That's it!

Now you just need to restart Varnish, and clear the Magento cache (including the Evolved Caching cache) and you should see Varnish serving cached content as you navigate the site.  the Varnish cache will also be cleared and populated as you use admin.  If you are not sure how to tell if Varnish is serving cache or not have a look at the bottom of our Evolved Caching Varnish documentation page.

Thanks for reading this mini series, we hope you find your Magento Varnish cache gives your store a real performance boost!

Magento Varnish how to - part two


Part Two


Welcome back to part two of this mini series on how to get a Magento Varnish cache on your Magento store.  Part one talked about why Varnish is something you should be using, and this part talks about the kind of performance increase you should be seeing by using Varnish on your store.  The next and final part shows you how easy it is to actually get Varnish working on your Magento using Evolved Caching.

Magento Varnish performance

 

So we've hopefully convinced you that using Varnish on your Magento store is a great idea, but what kind of performance increase are you likely to see?  This does depend to some extent on the spec of the server Varnish is running on, but whatever the spec Varnish is going to deliver it's cached content many, many times faster than having Magento process the request.  To give you an idea, here are some benchmarks we ran with an Evolved Caching Magento Varnish setup as described in the last part of this mini series.  The times shown below are the time it takes the server to generate a full page of HTML content to deliver to a customers browser (being the part that Magento is slow at), it doesn't take into account connection speed which can vary greatly for each user.

Home page

With standard Magento caches enabled the server takes an average of 175ms to build this page of HTML.

With Varnish serving a cached page the server takes an average of 18ms to build this page of HTML

Varnish is therefore around 10x faster in this case.

CMS page

With standard Magento caches enabled the server takes an average of 140ms to build this page of HTML.

With Varnish serving a cached page the server takes an average of 18ms to build this page of HTML

Varnish is therefore around 8x faster in this case.

Product page

With standard Magento caches enabled the server takes an average of 370ms to build this page of HTML.

With Varnish serving a cached page the server takes an average of 18ms to build this page of HTML

Varnish is therefore around 21x faster in this case.

Custom page

With standard Magento caches enabled the server takes an average of 480ms to build this page of HTML.

With Varnish serving a cached page the server takes an average of 18ms to build this page of HTML

Varnish is therefore around 27x faster in this case.


So you can see there is quite a difference in the time it takes the various pages to be built by Magento, while Varnish keeps a consistent 18ms to serve it's cached content throughout.  Because more complex pages take a longer amount of time to build by Magento, it makes sense that you see a greater performance benefit on these pages than on simple pages which are quick for Magento to build.  Category and product pages are obviously key to every Magento store and it's on these pages you are likely to see the greatest improvement.  So the longer and more complex your stores pages are, the greater performance benefit you are going to see by using Varnish.  If you want to see more, you can find the benchmarks for Evolved Caching here - the performance of Evolved Caching's own full page cache is virtually identical to Varnish so these figures are directly comparable to the same setup using Varnish.  Our store also uses Varnish so you are welcome to browse and test there as well.

Thanks for reading part two of this Magento Varnish cache mini series, the last part shows you how easy it is to get Varnish working on your Magento store by using Evolved Caching.

Magento Varnish how to - part one


Part One


Magento performance and speeding up Magento are hot topics, and ones which have seen a lot of discussion in the Magento community for years.  That's because it's something which every store owner should address and with Varnish being such a well established, fast, platform independent caching solution, using Varnish with Magento makes a lot of sense.

This mini series talks about using Varnish along side Magento in three sections.  Firstly it tells you why it's something you should be doing, secondly it shows you the kind of performance improvement you should see, and finally it shows you the super simple setup you need to get a Magento Varnish cache on your store using Evolved Caching.  This section looks at why you should be using a Magento Varnish cache on your store.


Why should I use a Magento Varnish cache?

 

Probably one the most noticeable things you have found when generally using and browsing your Magento store is that it's probably slower than you want it to be.  If it's that immediately noticeable for you, it's going to be immediately noticeable to your customers with the difference being they are probably going to end up on a competitors store which gives them a faster and therefore better shopping experience.  So the rather obvious solution is to improve the performance of your store with there being a couple of good standard options available.  The first is a Magento full page cache, and the second - being the one we are talking about in this mini series, is to use the external caching solution Varnish.

You are probably familiar with Varnish to some extent or have heard about it at least, but what exactly is it?  Well it's a highly configurable, advanced caching system which sits on the server between your customers browser and your Magento store.  It processes requests coming in to the server, and if it can serve it's own cached content then it will, otherwise it will pass the request to Magento to be processed as it would be without Varnish.  If it serves it's own cached content then the request never even reaches Magento.

Varnish is a time proven, configurable, and perhaps most of all very fast caching solution that will cache and serve full pages worth of HTML content with the result being the pages on your store will load extremely fast for your customers if you start using it.  That's great, but to gain these benefits typically a certain amount of work is needed by a developer or sysadmin to properly configure Varnish to work with Magento.  The problem is that the way Varnish caches by default doesn't fit well with Magento - it only caches pages by URL, and doesn't cache anything if the user has any cookies set.  So with this default Varnish configuration running you will get virtually no cached pages served at all and this is because Magento creates cookies right from the first request.  Additionally some important information about how pages should be displayed are stored in the users session and don't have to show in the URL, for instance category sorting parameters like products per page, sort order and so on.  You can soon see that because of these kinds of things using Varnish in Magento isn't quite as straight forward as it could be and the default configuration needs some changes to work happily with Magento.

But with these initial setup hurdles aside (which we will tell you how to easily overcome in part three of this mini series), Varnish is a caching system which it is well worth implementing on every Magento store as the performance gain your customers will see is significant.


Why is Varnish so great for Magento?

 

Magento is a heavy application with millions of lines of PHP code.  Each line of PHP takes a finite amount of time to run, and even though the time taken to run a single line is very small, when you start talking about tens of thousands of lines of code running for every request, you can really start to understand how Magento can be slow - it's just because there is so much code to process, the server can't do it any quicker.  So without increasing the spec of the server to run PHP quicker, the other option is to run less PHP to deliver a page to the browser.  Well that's exactly what Varnish and indeed all of the Magento full page caching solutions do in order to speed up Magento - it's not making the server any 'faster' it's just allowing the server to do a great deal less work for the same end result.

There is one key difference worth noting between a good Magento Varnish implementation and most of the Magento full page caching solutions, and one which makes Varnish significantly faster.  As noted above, Magento can be slow purely because of the number of lines of PHP code which need to run, and a large percentage of these lines need to run to 'startup' or initialize Magento.  Initializing Magento is unfortunately something which needs to happen for every single request Magento receives.

When you serve full page cached content certain areas of the page cannot be cached, for instance the mini cart, or the login links as this content changes dependant on the actions the customer takes such as adding a product to the cart, or logging in to the store.  So to have these parts of the page display the right information you need to collect that data uncached (called dynamic content) from Magento, but in order to get this information you need to initialize Magento - which as explained above is slow to do.

The problem here is that most full page cache solutions collect this dynamic data before they deliver the cached content to the browser and in the process significantly add to the time it takes to serve the cached content, with the result being pages load slower than they should in your customers browser.  Evolved Caching actually work differently to this - very much the same as Varnish.  The full page cache content is sent to the browser immediately meaning the pages load very quickly for your customers, with dynamic content then collected after this.  This means you don't need to initialize Magento at all in order to serve the cached page which makes for much faster times serving cached pages to the customer than most Magento full page cache solutions.

So to cut a long story short, Varnish is a such a good option for Magento because when it's configured correctly, like with Evolved Caching, you don't need to initialize Magento in order to serve a cached page.

Thanks for reading part one of this mini series, part two talks about the kind of performance increase you are likely to see by using a Magento Varnish cache on your store, and part three covers the easy steps you need to follow to get this caching working on your store.

2 October 2015

Get huge data savings on your cache with Evolved Caching

If you run a store with a lot of products, or have a multi store setup then you are likely to have a pretty large full page cache.  Well from version 1.9.6 of Evolved Caching you can slash the size of your cache by 85% by compressing your cached data.  Here's the savings we saw during testing while introducing an overhead of just 2-3 milliseconds:
  • Uncompressed cached page data size - 44KB
  • Compressed cached page data size - 6.6KB
  • Saving - 85%
If you want to significantly reduce the size of your full page cache then grab your copy today!

13 August 2015

Why should you buy Evolved Caching?

If you are on the search for a full page caching solution for your Magento store you should you will probably have seen there are a wide range of solutions with more on the way seemingly all the time.  With Evolved Caching being at the higher end of the price range why should you pick it over other solutions?

Evolved Caching offers not only the best performance in the market place, but it's also a significantly more advanced solution than competing products.  In performance terms Evolved Caching is comparable to Varnish so you are likely to achieve the same time to first byte (TTFB).  If you want to use Varnish, then you can integrate directly and have both Varnish and Evolved Caching serve your cached pages.  Evolved Caching will also allow Varnish to cache many more pages than other Varnish only extension solutions - PageCache powered by Varnish for instance stops serving cached content altogether as soon as you add a product into the cart.

Evolved Caching is able to achieve the same TTFB as Varnish because of the way in which it serves cached content compared to other solutions. Most pull the cached content, then populate the cached page with dynamic data (i.e. mini cart, header links) before delivering anything to the browser.  Doing this however means you have to enter the Magento framework to generate the cached content and this is always going to be slow as every time you do this you need to run many thousands of lines of code and execute a large number of database requests.  This has a direct impact of how long it takes the server to deliver content to the browser and therefore your TTFB.

Evolved Caching is different because it delivers the cached content to the browser immediately giving an excellent TTFB and then populates the page with dynamic content after it has been delivered to the browser. It can populate the page with dynamic content in 2 ways, either via an AJAX request, or via BigPipe. It was the first solution to use AJAX, and the only solution to offer BigPipe as an option.

Whichever method you pick you are going to have the cached page content delivered to the browser quicker and therefore achieve a better TTFB.  To give you an idea of how much quicker, looking at some of the demo's for other solutions you might see the server taking something like around 30% of the time to generate HTML for each page (say 600ms without caching, 200ms with).  If you have a look at our benchmarks you will see you are looking at less than 0.5% of the time to generate HTML for each page.

So performance and TTFB is one reason to buy Evolved Caching over other solutions, but the benefits cover much more than just performance.  Evolved Caching has a totally different approach to keeping the cache up to date. Many other solutions rely on a cache purge and crawl cycle to refresh the cache - so this means that the entire cache is cleared and rebuilt on probably a daily, or more regular interval.  When making updates to your sites content you may not see those changes reflected until this cache purge and crawl cycle has been completed.  Evolved Caching is totally different in it's approach as the aim right from the start has been to make it a very much a hands off solution that just works while keeping your cache always primed and up to date. So just the relevant cached pages are rebuilt for instance when saving a product, category or CMS page. It also caters for caching scenarios that other solutions don't like rebuilding the cache for time limited design changes which are store wide, or just apply to a product, category or CMS page. The same is true for other time limited features such as product special prices.

Basically once a cached page has been created, there should never be a reason to have to delete it, and it should always be kept up to date automatically. Having said that, should you find for whatever reason you do need to clear your full page cache Evolved Caching does include functionality to crawl your site to create a good basic cache as a starting point (product, category and CMS pages are created). It also allows you to regenerate your entire cache should you, for instance, want to make a site wide design change that affects every page, i.e. in the header or footer.

Another reason to favour Evolved Caching over other solutions is the options it gives you in how you want to store your cached content.  You can store to files, APC, Memcached or Redis with memory based cache storage being faster on average than files.  Although some solutions offer different caching backends, many don't and only cache to files.

Evolved Caching was also developed to make it easy to configure for your install.  Other solutions require some development knowledge to holepunch any but standard blocks from caching - so you need to create an XML configuration file defining extra blocks to exclude.  Evolved Caching instead provides a frontend URL helper argument, ?shownames.  Append this to any frontend URL and the block names will be displayed, just add any of these names into the extension config in admin and that's it - no development knowledge required. You can equally add in pages by URL to be excluded from caching from admin, i.e. cart, checkout, customer login area etc.

These things are really just touching the surface of what the extension can do compared to competing, you can read a lot more in our documentation.

6 August 2015

When to use Magento full page caching

Caching, and particularly full page caching in Magento is a hotly debated topic.  If you have a developer working on your store or you are a developer, you probably know the phrase "have you cleared the cache" very well.  You probably also know the famous phrase
"There are only two hard things in Computer Science: cache invalidation and naming things."
Put together the pieces and you can quickly ascertain that caching is a tricky area to deal with and something that should be carefully considered, and properly implemented for your Magento store.

So with this being such a difficult area to address, should you even bother implementing any kind of full page caching solution for your store?  Well the short answer is yes, simply because by caching pages you reduce the work the server has to do with the end result being web pages get served to your customers faster.  So even though the hardware your site is running on has not changed, you still 'boost performance' by using caching - and I put that inside quotes because actually the server is not working any faster, there is just less work it needs to do to serve a page.

The long answer is yes, but...  To implement caching properly you need to first and foremost have a good foundation for your store.  This means that your hosting must be sufficiently powerful to run your store well with no caching enabled.  This is a key point that many people miss when thinking about a full page caching solution for their store.  Full page caching is not a quick fix for poor store performance, it's a tool that should be implemented on a store that is already performing well, in order to take that performance to the next level.

When thinking about which of the wide range of full page caching solutions you want to implement, you should consider that Magento is a complex framework, and that caching Magento's pages effectively is not a straight forward task.  You should carefully consider and research the available solutions.  Firstly go for a solution that is mature in terms of development - so it's not a recently launched product (believe me there will be bugs!), and has a good number of releases over it's development cycle.  At the time of writing this, our own solution Evolved Caching has been in constant development since February 2013 with 58 releases, so it's a mature and highly capable product which can be used on any store, however much it has been developed.

Also review the capabilities of the full page caching solution you are considering.  Although there are a lot of options out there, remember that Magento is highly complex software which presents a very wide range of possible caching scenarios.  Unfortunately you will probably find that many of the solutions don't cater for many of these scenarios, for instance, does the cache get updated when a time limited design on the store, category or product page starts or ends? (yes Evolved Caching does!)

You should also definitely contact the extension developers for the solution you are interested in to ask them any questions you may have.  From the responses you get back, you can often get a good impression of the quality of the extension they produce.  If they can explain technical details in a clear, informative way that a non developer can easily understand, then they probably have a pretty good idea of what they are doing and therefore a good product.  Remember this quote?


Well that applies here too.  If the developers can't explain what the extension does in simple terms then they probably don't have a great understanding of the concepts themselves, in turn the product is unlikely to be as good as it should be so steer clear.

Finally, get a trial!  As a company we truly believe that if you are asking people to part with a reasonable amount of money to get hold of your code, you should give them the opportunity to trial the software first - so that's exactly what we do.  If a company refuses to allow you to trial their software before purchasing it then you might want to think about the confidence that means they might have in their product.

If you have any questions about anything here, or want to get in touch with us about Evolved Caching, you can easily contact us from our store where you can also find complete documentation about our own full page caching solution, Evolved Caching.

24 September 2014

Evolved Caching 1.9.0 released


Version 1.9.0 of our flagship Magento extension, full page caching solution Evolved Caching has just been released.  1.9.0 marks the 12th release since version 1.8.0 and again a lot has changed.  We have added support for a wider range of setups (for instance supporting installs in a subdirectory), added better and more complete admin notifications to improve usability, greatly increased the number of scenarios under which the cache is refreshed (for instance on a frontend sale, and when taking admin action like creating orders and credit memos) and implemented a number of other functionality improvements and minor bug fixes.

The most noteworthy addition to the extension however is the use of BigPipe technology, new to 1.9.0.  This replaces the previous non AJAX dynamic content serving strategy and we believe Evolved Caching to be the first full page caching extension to implement it.  This greatly improves performance when compared to the previous non AJAX strategy and means that now both AJAX and non AJAX methods are closely comparable in performance terms.

BigPipe Update Strategy
BigPipe Update Strategy

Using BigPipe strategy brings a major advantage.  When using AJAX updating for dynamic content, if you exclude a block from caching which relies on certain JavaScript functionality, you may find this functionality breaks.  While you can already resolve these problems by using the evolved:loaded JavaScript event Evolved Caching fires, by switching to BigPipe you can now resolve these issues without any technical knowledge and still keep outstanding performance.


You can read about the full capabilities of Evolved Caching including in depth usage and full benchmarks here.

The extension is compatible with Magento 1.4 and above.  You can view all Hussey Coding extensions including this one on Magento Connect, and you can purchase Evolved Caching here.

12 May 2014

Magento performance profiler


We have recently launched our latest tool which is designed to go hand in hand with Evolved Caching, our performance profiler.  Evolved Caching is our highly advanced Magento full page caching solution, which we truly believe is the best caching solution in the market place, oustripping alternatives both in terms of performance, and versatility.

We know that you want to be sure before purchasing an extension like Evolved Caching, and to help you make the right choice is exactly why we created our profiler.  The completely free tool makes it quick and easy to analyse the performance of your store and gives you straight forward and clear advice, highly tailored to your store and it's current performance.

It's not sales driven, so if the performance of your store is already good then it will tell you that you don't need Evolved Caching.  If there is potential for improving performance then it will tell you how you can do that, and give you the reasons why you might want to consider purchasing Evolved Caching.

You may already have come across our previous blog post about Magento performance - it's a great source of information which shows you three important areas to look at when assessing the performance of your store.  The profiler is designed to asses, in real time, the areas discussed in the post and will give you clear information about current performance, it will also show you any areas of improvement, and make a recommendation on what kind of improvement you would be likely to see using Evolved Caching.

So along with the extensive documentation that already exists for Evolved Caching, and the performance information given in the blog post, we are confident that the addition of the profiler allows you to make a truly educated decision about purchasing our top rated caching extension, Evolved Caching.


You can read about the full capabilities of Evolved Caching including in depth usage and full benchmarks here.

The extension is compatible with Magento 1.4 and above.  You can view all Hussey Coding extensions including this one on Magento Connect, and you can purchase Evolved Caching here.

9 April 2014

Evolved Caching 1.8.0 released


Version 1.8.0 of our flagship Magento extension, full page caching solution Evolved Caching has just been released.  As ever a lot has changed since version 1.7.0, and a number of fixes for occasionally occurring bugs are now in place.  More importantly however are two major new features added for this release.

The first major addition is the automatic re-caching of pages for scheduled design changes, and product special prices.  If you have configured a store wide, category based, or product based design change to run for a limited time, the relevant cached pages will now be cleared and re-cached automatically at the start, and end of this period.  The same is also true when scheduling a time limited special price for a product.  So now you can be sure your cache will always be up to date, even during seasonal promotions.

Generate Cache button
Generate Cache button

The second major addition is a feature which many competing full page cache extension developers offer only as a separate, paid extension - a cache crawler.  The Full Page Cache Entries grid now features a new button, Generate Cache.  Once generated, by using automatic cache clearing and warming, the cache really keeps itself up to date.  However when there is no cache, whether that's because Evolved Caching has just been installed, or because the cache needed to be cleared for some reason, the Generate Cache button lets you immediately build up a good basic cache for the store.  The crawler will cache all CMS, category and product pages for the store, so a good percentage of pages a customer visits will be cached right from the outset.


You can read about the full capabilities of Evolved Caching including in depth usage and full benchmarks here.

The extension is compatible with Magento 1.4 and above.  You can view all Hussey Coding extensions including this one on Magento Connect, and you can purchase Evolved Caching here.

25 February 2014

Evolved Caching 1.7.0 released


We have just released version 1.7.0 of our flagship Magento extension, full page caching solution Evolved Caching.  A lot has been added since version 1.6.0 including making both the extension and Varnish integration fully compatible with Magento CE 1.8+, adding the ability to fully manage your Varnish cache from within Magento, allowing URL parameters to be ignored by the cache, and when using AJAX based dynamic content updating you can now define holding HTML to be displayed before the dynamic content has been collected from the server.

You may have heard about many full page caching solutions, including Varnish, running into problems with the frontend form key which has been introduced with Magento CE 1.8.  The addition of this key if not fixed effectively breaks the store as you can no longer add products to the cart.  Some caching solutions which have 'fixed' the problem resolve it by stripping out the extra level of security offered the inclusion of this form key.  Evolved Caching resolves the issue both in it's own cache, and in Varnish whilst maintaining the extra security offered by the form key.

Another important addition since 1.6.0 is the ability to ignore URL parameters when building the cache.  You may for instance have a number of landing pages on your site where you use tracking parameters in the URL to analyse traffic.  As these parameters have no bearing on how the page is built, ignoring them means that extra cached content is not created due to their inclusion.

A couple of exciting new additions relate to Varnish integration, and holding HTML.  You can now actively manage your Varnish cache from within admin, and it will be automatically cleared and warmed at the same time as the Evolved Caching entries.  This also extends to managing image, CSS and JS content cached by Varnish.  This makes Evolved Caching the most capable Varnish cache integrated solution available for Magento CE 1.8 and above.

Setting block holding HTML
Setting block holding HTML


Finally, another major addition is the ability to define holding HTML for excluded blocks.  This allows you to set HTML to be displayed on screen while the dynamic block content is being collected from the server via AJAX.  Great if you want default content to be displayed as soon as the page loads.


You can read about the full capabilities of Evolved Caching including in depth usage and full benchmarks here.

The extension is compatible with Magento 1.4 and above.  You can view all Hussey Coding extensions including this one on Magento Connect, and you can purchase Evolved Caching here.

9 January 2014

Speeding up Magento

If you are a Magento store owner there's a good chance that one of the things that is pretty high on your todo list is reducing the time it takes your stores pages to load.  If you are a developer you have no doubt been asked to impart your knowledge on how this is best achieved on more than one occasion.

A quick search will soon reveal a multitude of pages and discussions talking about how to improve the speed of your store, with loading times often featuring heavily in any arguments against using Magento.  It's true that Magento is complex software, and is also a heavy application for a web server to run.  Until you are experienced it can also seem mind bogglingly complex from a development point of view.

However over the years of developing Magento I have come to find the framework to be the best developed, most capable ecommerce platform in the market place hands down.  Once you have mastered it it's also extremely intuitive and amazingly versatile to develop - it quite comfortably stands up in it's own right as a fully fledged MVC framework.

So even though the versatility you will find in Magento brings a down side in the form of potentially slow page loading times, rest assured that with so much scope for development it's certainly not a problem which can't be addressed with very effective results.

You have probably come across this post after doing some research into exactly how you might achieve faster page loading times, and that probably also means you have come across the near endless multitude of guides and suggestions on the topic.  You will find some good pointers, and tips like minifying JS/CSS, enabling Gzip compression and installing an opcode cache such as APC or XCache are all worthwhile, but in my experience pretty much all of the solutions in these guides don't actually make a great deal of noticeable difference to page loading times.

The reality is that for every request Magento processes, thousands of lines of code need to be executed.  This takes both time and processing power and until each request completes and the resulting HTML response has been sent, the user browsing the site won't see any page content.  While tweaking the server setup and Magento configuration might improve overall performance by probably no more than 5%, the process of Magento building each page accounts for at least 95% of the total work the server has to do to deliver the entire page and all assets (images, JS, CSS) to the browser.

Many of the guides and suggestions out there don't even make, let alone address this fundamental point, and rather cloud the issue with endless server and Magento tweaks which would take a huge number of hours to complete if you were to follow them all, but result in just a very modest improvement in performance.

If however you want to see a real improvement in page loading times, then there are really only three areas you need to concentrate your efforts.  Be warned though that all three of these areas are likely to require investment, so if you are only interested in free solutions, this probably isn't the post for you.  If however you have some money to put into it then read on...

Server Hardware


The first area you need to look at it is the hardware your store is running on, so your web hosting package.  This is of course the foundation of your entire store setup and anything that you build on this foundation can only ever be as good as the hosting will allow.  For instance if you are trying to run a Magento store on a cheap shared hosting package, then you can tweak the store, and spend as much time and money on optimising it as you like, but you will never achieve good performance because the raw processing power is just not there in the first place.

So review your hosting and make sure it is up to standard.  Which hosting package you choose directly relates to how much traffic you expect to see on the store as the higher the traffic, the more capable the server will have to be as it will be fulfilling more simultaneous requests.  Always steer clear of shared hosting when it comes to Magento, and instead go for a suitable VPS or dedicated hosting package.  As for which specific package to go for, well that entirely depends on your store setup, and your sites traffic.  If you are running a smaller, low traffic store, then you can probably get away with a mid to low range VPS package, if however you are running a high traffic store with lots of products, you will almost definitely want a dedicated server package.  As your site grows you will discover that the possibilities for Magento hosting continue to scale up to complex, multi server, load balanced setups - but if your store is at that level, you probably don't need to read this post.

To determine the best hosting package for your store I would recommend contacting someone with good knowledge on the subject.  There are many companies who offer Magento specific hosting and should be happy to advise, or a good Magento developer will also be able to give you some pointers on a suitable package to go for.

If you want to get in touch with us for some advice on which hosting package is best suited for your store, then just drop us an email to support@husseycoding.co.uk with the following information:

- Store address
- Summary of typical monthly traffic
- Geographical location of main target audience

We will be happy to have a look at your site and give you some free advice on hosting packages which suit your setup.

Time for first request to complete


When viewing a web page the first request that is sent to the web server is a request for the complete page HTML, and once this has been completed everything else relating to the page can be requested, so the images, CSS, JS and so on.

In the case of Magento, fulfilling this first request means initialising the Magento application, routing the request to the relevant controller in the framework, generating the layout for the page, and then finally rendering the page out to HTML from the layout.  This resulting HTML is then returned in the server response to the browser, at which point the browser can display the page HTML and begin sending requests for images, JS and CSS files.

Each step in generating the pages HTML takes time, and as a whole quite a lot of time.  When I talk about rendering out a page accounting for at least 95% of the work the server has to do for a page and all assets to be delivered to the browser, it's this complete process I'm talking about.  The rest of the requests which come after this are just for files so all the server has to do is deliver each file - no processing of the request is required.

So it makes sense that this first request for the page HTML is the one that could do with improving, and that's exactly what all of the Magento full page cache extensions, and also Varnish aim to do.  I'm sure you are aware there are quite a few Magento full page cache solutions out there, with varying levels of performance.

As already mentioned, the process of rendering out a Magento page is time consuming, and as soon you need to enter the Magento framework to fulfil a request you immediately significantly increase the time it takes for that request to complete.  This is the main difference between many of the full page cache solutions available, and our own solution, Evolved Caching.  Although all of the full page caching solutions available do actually cache the full page HTML, the vast majority of the solutions also need to enter the Magento framework in order to fulfil the cached page request, and this in turn means that the speed at which this request can be fulfilled becomes entirely dependant on the speed of your Magento install (which I'm sure you will agree to a large extent defeats the object of the exercise).  Evolved Caching operates much the same as Varnish and fulfils this initial request for the page HTML entirely outside of the Magento framework giving vastly improved performance when compared to other solutions.

In order to add any dynamic user specific content to the site, Varnish has ESI, which requires tags to be put in relevant places in the site code.  The major down side of using ESI with Magento is that there will often be multiple parts of the page which need to have dynamic content added, and for each of these, a separate request must be sent in to Magento.  This of course kicks off the slow process of initialising the framework and rendering out an HTML response.  In addition to this, Varnish will not deliver the page to the browser until all the ESI content has been collected, and although ESI responses can also be cached, the content Magento produces is just too dynamic to make this a realistic possibility.  So by using Varnish and ESI you might actually end up sending 2 or 3, or more requests into Magento before the page is delivered to the browser, thus resulting in page load times which are actually slower than without Varnish!

Evolved Caching on the other hand delivers the page HTML immediately after it is pulled from cache, and then fulfils the requirement for dynamic content on the page via a single AJAX request while other requests for things like images, JS and CSS are still running.  Although this request does have to enter the Magento framework, the request is quite a bit 'lighter' than a standard request, and is also only made after content has already been delivered to the browser thus eliminating the waiting time of other full page cache solutions, and also Varnish + ESI.

Evolved Caching was the first Magento full page cache extension to introduce this innovation and has a large amount of equally valuable functionality on top of this.  It also integrates directly with Varnish by way of it's caching key cookie and this greatly increases the ability of Varnish to cache and fulfil requests for your store.

So in summary reducing the time it takes for the server to fulfil this first request for the full page HTML is exactly what full page cache extensions, and also Varnish do - but the key to this being really successful is to not enter the Magento framework before content is delivered as this will immediately have a major impact on the performance of the cache.

If you are interested in Evolved Caching, then you can find a summary of functionality on Magento Connect, read the full guide here, and purchase the extension from our store here.

Requests per page


The final area which you need to look at is the least easily addressed, particularly if your store is already developed and themed.  That's certainly not to say that it can't still be looked at, it's just more easily done when the site is initially being built.

When viewing a page, multiple requests are sent to the server before that page fully loads, in fact every separate item on the page is requested individually from the server, so every image, JS file, CSS file and of course the full page HTML as we have learned above, are all received as a response to an individual request for that content.

If you look at a typical web page using the net panel of Firebug, or if you don't have that, a site such as GTmetrix, then you are able to see just how many requests have to be fulfilled in order for that page to fully load (if you are looking at GTmetrix, look at the waterfall diagram).  Each item in the waterfall which describes the loading of the page represents an individual request which has been made to the server for content.

This is significant because a browser can only fulfil a certain number of requests in parallel.  At the time of writing, in modern browsers this is along the lines of 6-8 - so 6-8 of the requests shown in the waterfall diagram can be completed simultaneously, but no more.  When the maximum possible number of requests for your browser are all in progress, further requests must be queued and become idle until an existing request completes, therefore making room for a queued request to start.  When looking at the waterfall diagram, the left hand most block of colour for each request represents the time that request is queueing and idle, and you will probably see that all requests after a certain point are queued.

This queueing is time that is entirely wasted, and no queueing would result in a significant reduction in the time taken for pages to fully load.  So one way to alleviate this is to reduce the number of requests per page.  Merging of CSS and JS is a good, easy way of going some way towards doing this, and for a Magento store will often mean reducing perhaps 25+ inidividual requests down to just 2, one for merged JS, and the other for merged CSS.

There is some discussion surrounding whether or not to use JS/CSS merging within Magento as the JS/CSS files which are required on each page tends to differ a little between different areas of the site, and this results in different merged JS/CSS being created wherever this is the case.  The end result is that your browser ends up needing to download a new JS/CSS merged file for each of these different areas but the actual file content contains very little that differs from what was perhaps already downloaded for another area of the site.  Without merging only the new JS/CSS files that differs for each area would need to be downloaded rather than the whole lot again (in merged form).  The argument against merging however ignores the fact that without merging the number of requests for a page will likely increase by at least 20, and as long as you have sensible file sizes for your images, request queueing has a much greater impact on page loading times than the amount of data which must be downloaded for each page (merged CSS/JS combined should only account for perhaps 30k of data, around the same as 1 small image).  In case you have come across any discussions like this, my recommendation is to definitely enable JS and CSS merging.

So that does a pretty good job of reducing the number of requests for JS and CSS content, however it's likely that there are still quite a few more requests that can potentially be reduced down, particularly for images.  Typically Magento themes use quite a high number of images and while things like product and category images can't realistically be worked on to this end, it's well worth reviewing what images are to be found in common areas of your store such as the header, footer and sidebars.  There is very likely scope here for reducing the number of images required by creating suitable sprites.  A sprite is simply a single image which contains several images within it.  This means you can effectively download a number of images in a single request, and then use CSS to position the sprite within an element to show just the image you require.  That way you can have a number of different images in different places on the site, but only require one server request to obtain them all.  A bit of common sense is of course required in balancing file size vs number of requests when using sprites.

As well as thinking about sprites also consider using more CCS3 styles.  All modern browsers now support CSS3, and support in older browser is getting better all the time as new browsers continue to be released and older ones fall away.  As time goes on of course, older browsers that don't support CSS3 will disappear entirely.  Using a few simple CSS3 styles can really help you cut down the number of images you need to use, and styles like border-radius address design problems which historically have created the need for quite a large number of individual images (a box with rounded corners for instance).  Using CSS3 these kinds of things can be achieved using no images at all, meaning the only request sent to the server is for the CSS file containing the styles.

Working on the images and considering the CSS3 styles to use is the reason why I say this is easier done at the initial design and build phase where the possibility of using sprites and styles can be taken into account - this is of course significantly easier than reworking an existing theme.

Going back to talking about the browser limit of 6-8 simultaneous requests at a time, it's worth noting that this limit is applicable on a domain basis, so if you had a page from domain1.com and domain2.com both loading at the same time in your browser, both pages could send 6-8 simultaneous requests, making a total of 12-16 simultaneous requests sent by the browser.  This is exactly the functionality which a CDN leverages.  As CDN's reside under a different domain to the main domain you see in the address bar, it allows a browser to send an additional 6-8 simultaneous requests for every CDN domain used.  The result of course is a reduction in requests queueing, and therefore a decrease in the time it takes for a pages content to load entirely.

Getting a CDN setup for your store isn't an entirely straight forward process, and something you should probably approach your hosting provider about if you don't have the skills in house, however if you have done all you can to reduce the number of images served by creating sprites and using CSS3 styles, then it's a good option to look at.



I hope that this 3 point guide has proved informative, and if you want to get in touch with us regarding the performance of your store, just drop us an email to support@husseycoding.co.uk with your site address and we will be happy to evaluate your stores performance for free and come back to you with some pointers on further steps you could take.  You can also assess your store using our profiler for some straight forward, clear, and specific advice on improving the performance of your store.