nayaread
HomeFavouritesTopicsSources
HomeFavouritesTopicsSources
NayaRead links to original engineering blogs. All copyright belongs to the respective authors.
Shopify Engineering·Dec 10, 2020·14 min read59

Simplify, Batch, and Cache: How We Optimized Server-side Storefront Rendering - Shopify

On December 16, 2020 we held Shipit! presents: Performance Tips from the Storefront Renderer Team. A video for the event is now available for you to learn more about how the team optimized this Ruby application for the particular use case of serving storefront traffic. Click here to watch the video. By Celso Dantas and Maxime Vaillancourt In the previous post about our new storefront rendering engine, we described how we went about the rewrite process and smoothly transitioned to serve storefront requests with the new implementation. As a follow-up and based on readers’ comments and questions, this post dives deeper into the technical details of how we built the new storefront rendering engine to be faster than the previous implementation. To set the table, let’s see how the new storefront rendering engine performs: It generates a response in less than ~45ms for 75% of storefront requests; It generates a response in less than ~230ms for 90% of storefront requests; It generates a response in less than ~900ms for 99% of storefront requests. Thanks to the new storefront rendering engine, the average storefront response is nearly 5x faster than with the previous implementation. Of course, how fast the rendering engine is able to process a request and spit out a response depends on two key factors: the shop’s Liquid theme implementation, and the number of resources needed to process the request. To get a better idea of where the storefront rendering engine spends its time when processing a request, try using the Shopify Theme Inspector: this tool will help you identify potential bottlenecks so you can work on improving performance in those areas. A simplified data schema of the application Before we cover each topic, let’s briefly describe our application stack. As mentioned in the previous post, the new storefront rendering engine is a Ruby application. It talks to a sharded MySQL database and uses Redis to store and retrieve cached data. Optimizing how we load all that data is extremely important. As

Databases
Read original on shopify.engineering

Discussion around the web

  • Hacker News3 · 0 💬

Score breakdown

  • Technical depth87
  • Practical value75
  • Originality85
  • Writing quality100
  • Source reputation0
  • Recency0
  • External engagement6
  • On-site engagement0

NayaRead shows a summary and links to the original article. The full article is hosted on shopify.engineering.

More like this

Etsy — Code as Craft

Improving performance by prefetching product pages from Etsy Search

David Weinzimmer·Oct 29, 2025·11 min read
Shopify Engineering

How to Do an In-depth Liquid Render Analysis with Theme Inspector - Shopify

Oct 20, 2020·9 min read
Shopify Engineering

Improving Shopify App’s Performance - Shopify

Mar 5, 2024·10 min read
Shopify Engineering

IdentityCache: Improving Performance one Cached Model at a Time - Shopify

Apr 4, 2013·8 min read