How to improve Ruby on Rails performance with Caching?

Do you want to boost your app performance? Caching can help to improve the performance of website and app. Rails offers a set of caching features that helps to speed up your web application. Rails 5 introduced a new command for development cache that helps the developers check how caching behaves in the development mode.

Caching is a technique that stores the records so that subsequent requests can be fulfilled faster. There is no need to produce the same data again. It not only speeds up the web application but also improves the user experience. Sometimes the developers turn off the caching due to the security reasons, until and unless the programmer faces any serious issue, caching does not come into existence. For improving the performance, one tries to add indexes to the specific tables and caching of simple patterns. That is not the right way of performing cache into the application.

There are different types of caching that help to maintain the performance of the application. We’ve listed some of them:

HTTP Caching

This caching depends completely upon HTTP headers. It is the main caching technique in rails; it uses the web pages, images and files altogether that have already been loaded and render the files from cache rather than wasting time in fetching from server. The main concept of http caching is saving last modified which means it saves the record of last loaded page or last page downloaded. Whenever a http request is made, the caching searches if the data called is fresh or already been there by the last requests, it renders the old data if same data is called for or provides the fresh new data.

Page Caching

Page caching in rails works on creating file in the file system. Perhaps, this caching is removed from rails 4.0, but it is still available as the gem in gem directory. With page caching, it means placing the complete HTML page into the server and whenever the page is the requested for the second time it directly gets called from sub-directory rather than being rendered from the main public directory of the server.

Fragment Caching

With the help of this caching, one can save the web page in parts of its view. It can be used as a combination of HTTP caching and page caching. However the advantages of such caching are probably similar as caching reduces the server load and helps to render the web pages rapidly. Fragment caching allows the parts of web pages to be locked in different packages and serves it for the second request call of same server pages blocks.

Action Caching

In rails, filters are majorly used for performing some actions prior or later to all actions. Page caching cannot be used if rails use filters. That is where action caching comes in picture. Action caching serves similar like page caching except the fact that before rendering the resulted page, it allows the previous filters to work as required to avoid unwanted server errors in runtime. This helps in running authentication and authorization code with complete security and then serves the result page from the cached memory.

Russian Doll Caching

In some cases, nesting fragment caches may be used to maximize cache hits. It ensures that caches can be used even when the content changes. If any change occurs in a particular caching, only that cache should be expired. Parent nested cache can be reused, resulting in an improvement in app performance. The major advantage of Russian doll caching is that if one segment is updated, the others can be used easily.

Related Article: Work Better With Rails Web Application by Improving Database Indexes


Some developers overlook caching. Caching is a great technique that helps to get rid of unnecessary consumption of additional time while getting rid of unnecessary consumption of extra time while getting records in response of any http requests hit on server. In rails, caching is by default on in the production server. To play around with caching locally, some minor changes are required in the code that comprises of:

config.action_controller.perform_caching = true

That has to be added in the relevant file named, config/environments/*.rb file.

Hence, the caching makes request and response to and from server very easy, therefore engaging lots of developer to perform various kinds of caching as per the server requirements. It always boosts up the performances of websites very significantly, resulting in a drastic change in the server load time.

Leave a Comment