Improve Performance of a Drupal Site

Improve Performance of a Drupal Site (In the increasing order of complexity)

  • Keep the core updated, contrib module and themes updated. Yes it matters.
  • Install APC on your server. (Moved to top based on suggestion from Letharion)
  • Page Caching : admin/config/development/performance Difference between Minimum cache lifetime and Expiration of cached pages
  • Block Caching Caching options for all the blocks.
  • Aggregate javascript and css files - Front End Improvements
  • Disable Unnecessary modules. Every module adds to the amount of code that needs to be available for a page load. And it also increases the number of lookups. Wherver possible use a generic module in place of multiple module that does specific functionalities.
  • Cache Views content - Content aware caching for Views
  • Disable DB logging - Use
  • Reduce 404 Errors -
  • Fast 404 Responses - - Try handling at server level.
  • Client Side Validations -
  • Compress Image -
  • Lazy Loading of Images - Don’t load unnecessary images -
  • Use Sprite Sheets -
  • Set Minimum Cache Life Time Value to a higher number and use cache clearing modules to clear the caches for specific pages - Whenever I edit/update a node all the page caches for anonymous user are lost
  • Use Devel Module to watch queries.
  • Rewrite Views Queries / avoid Views if its a overkill.
  • XHProf -
  • FPM, HHVM.
  • DB Profiling and Tuning -
  • Use Boost, don't Bootstrap DB if not required. For most of the small to medium sites Boost is good enough and you may not need Reverse Proxies or so.
  • Use CDNs - Its easy to set up.
  • If your cache tables are huge use Memcached - If you can install memcached and set up RAM for it, it is not as complex as it sounds.
  • Use Reverse Proxy Server - Varnish(at-least for assets). Helps a lot if most of your users are anonymous.
  • Compressed transfer - Enable gzip compression
  • Keep Alive - Use Persistent Connections where possible.
  • Progressive JPEGS -
  • CACHING IN CODE - Eaton’s blog is awesome.
  • Implement Cache Warming - - Cache Warm the pages before the end user hits them.
  • Master Slave DB Config - makes it easier for you to set up one.
  • Database Clusters -
  • Load Balancers -
  • Use heuristic Cache Warming -
  • Authenticated User Caching -


1) Keep core updated & contrib modules & theme updated
2) Page Caching
3) Disable Unnecessary modules
4) Cache views content
5) Disable DB logging
6) Compress image size & Compressed transfer - enable gzip compression
7) Use Devel module to watch queries
8) Use Boost module for small and medium sites
9) Use CDNs
10) Use Reverse Proxy server - like Varnish