Ruby on Rails, often referred to as Rails, is a web application framework for building dynamic websites. The framework has gained popularity, especially among small startups. Examples of sites built on Rails are Airbnb, Bloomberg, and Crunchbase. Ruby on Rails web application development takes 25 to 40% less time than other frameworks due to its simplicity and easy coding.

Considering the requirement of rapid prototypes and more time-to-market, Ruby on Rails makes sense for companies. The Ruby on Rails web application architecture enables companies to make flexible modifications in their apps and add new features accordingly.

However, an important aspect is to improve the performance of Ruby on Rails for developing applications. While there are several Rails web application tutorial for improving development performance, you can’t get it properly until you practice it.

Rails works as a collection of gems (packages), add-ons, and extensions that make it powerful and complex at the same time. In this article, you’ll learn how to use Rails to optimize and improve application performance.

Read more: Top 10 tips to Boost Ruby on Rails Application Performance

1) Fragment Caching

When a Rails web application accepts a request to show a page in the browser, the action controller usually asks the model for the requested data. Then the model fetches the data from the database and passes it back to the controller. Eventually, the controller renders the view to show the data in a human-readable format.

The rendering operation can impact loading times when the browser needs to display a lot of data. A good Ruby on Rails web application example for caching is when showing a list of all available products in an eCommerce store. To speed things up, you need to cache part of the returned view. Fragment caching allows you to wrap a part of the view in a block and serve it out of the cache store when the next request comes in. Cache fragments expire when the HTML in the view changes.

2) Associations Counter Cache

Associations are the connection between two Rails Active Record models. The purpose of associations is to simplify various operations on the record. For example, in an application that displays authors and their books, you have to declare the author’s name for each book. To simplify this operation for cases when the same author has many books, you can use associations to connect between the author and their many books.

The counter caching feature eliminates the need to count associated records in the database every time the page loads. The counter cache keeps a separate counter for each associated object and updates the count whenever you create or remove objects. As a result, you can use a single SQL query for all associated records.

Get Estimate for Ruby on Rails Application

3) Image Upload with Active Storage

Active Storage is a built-in Rails 6 gem that handles file uploads to cloud storage services, such as digital asset management systems. Active storage provides a local disk service for development and testing. In addition, the service supports file mirroring for migration and backups. Active Storage also attaches uploaded files to Active Record objects.

The Active Storage interface can transform image uploads and deliver multiple resolutions and formats for different devices and browsers. Moreover, you can generate representations of non-image uploads like PDFs and videos and extract metadata from files.

4) Conditional HTTP Caching

There are many tools to cache HTTP responses. Rails Developers often prefer not to cache all the content they receive on the client-side. Instead, you might prefer to ask the server whether or not a resource has been updated.

HTTP conditional caching enables you to find out if a new version of a resource is available on the server. You can then leverage general conditional caching with dedicated Rails tools to check if a client-side cache is fresh.


ETags are a common way to verify an HTTP cache. An ETag represents the state of a specific resource in an HTTP server response header. The verification process consists of two stages. First, you store the initial state of an Etag when you receive a server response. Then, you send another request to the server to find out if the resource has changed since the last request. This request includes the If-None-Match header with the initially stored Etag.

The server compares the current ETag to the one provided by the client-side. If the two ETags match, this means that the cache has not changed. The server responds with a “304 Not Modified” status. If the resource has changed, the server will send a new ETag and the updated response.

Last-Modified Timestamp

The Last-Modified header returns a timestamp of when the resource was last modified. The client can then include the Last-Modified timestamp in an If-Modified-Since header. The server will respond with a value that indicates if the resource was modified since the previous request.

Caching with fresh_when

The Rails fresh_when method leverages Etag or a Last-Modified timestamp to find out if a resource has changed. You can attach Last_Modified or Etag to the state of your Ruby on Rails application development.

5) Page Caching

Page caching is a Rails mechanism that enables the web server to generate a page without going through the entire Rails stack. The HTML page is placed in a public directory and delivered from the web server when you load the page.

Page caching was removed from the Rails 4.0 core, but it is still available as a gem. In addition, you can save gzip versions of the cached page. The web server can quickly deliver the gzip version instead of engaging with the Rails app.

Page caching works well only for static web pages. For custom, dynamic pages, you have to use a client-side header to cache the endpoint and set a proper Vary header. Another option is to increase your cache storage space to store caches from a large number of users.

Ruby on Rails is a popular web development framework. Checkout pros and cons of Ruby on Rails for web development, helping you to make a better choice.


Poor website performance and slow loading time are the main factors of page abandonment. The average user has no patience to wait for a slow page to load. Approximately half of the users expect a web page to load in less than two seconds, and 40% abandon a website that takes more than 3 seconds to load.

These statistics put a lot of pressure on developers. On the one hand, you want to embed advanced functionalities, animations, and pictures to your sites. On the other hand, advanced functionalities slow down your website.

If the application doesn’t load, you will lose customers like anything. Since Google also focuses on UI/UX for SEO, your Ruby on Rails app development needs to be quick and engaging for the users. The Ruby on Rails web application tutorial for improving app performance will only help you if you implement them. There are multiple other ways through which you can speed up the application by adding code and RubyGems.

Rails on Rails developers have to improve and optimize website performance in order to keep up with user expectations. Hopefully, this list of performance tips can help make your Ruby on Rails app faster and more effective.

Click here for more details…

Consulting is free – let us help you grow!