Skip to main content
Back to Insights

Why slow Drupal sites are rarely a Drupal problem

Valentin Zsigmond
Valentin ZsigmondApr 3, 20266 min read

A slow Drupal site tends to start the same conversation almost every time.

The homepage takes a few seconds to appear. Internal teams start wondering whether the hosting is wrong, the design is too heavy, or the whole platform needs replacing. After a while, "maybe Drupal is the problem" becomes the easy explanation.

Most of the time, it is also the wrong one.

Slow Drupal sites are usually not suffering from being Drupal. They are suffering from layers of technical drag that nobody has had the time, permission, or specialist context to remove properly.

Slow is a symptom, not a diagnosis

Performance problems rarely come from one dramatic issue. More often they come from several smaller ones stacked together: oversized images, weak caching, unnecessary modules, untuned queries, and frontend decisions that looked harmless in isolation.

That is why sites often get slower over time. Features keep being added, but nobody is cleaning up the drag accumulating underneath them.

So before anyone reaches for a rebuild, it helps to know what we actually find when we open a slow site and look. In our experience the cause is almost always one of a handful of specific, fixable problems, and none of them requires starting over.

Cache that is misconfigured, not missing

Every Drupal site has caching. The question is whether it is configured correctly. We regularly find sites where one cache layer is doing its job and another is quietly switched off, or where a single block forces the whole page to rebuild on every request, or where one contributed module disables caching for every page it appears on without anyone noticing.

The fix is not "turn on the cache." It is auditing each layer in turn (page cache, render cache, and CDN cache) and finding the specific misconfiguration that breaks the chain. Drupal can be fast, but it needs its caching layers set up properly. We often see sites where the cache technically exists and almost never produces the savings it should. Putting that right is frequently a configuration change rather than a code change.

A database doing work it should not on every request

Drupal's database abstraction is excellent for correctness, but it does not optimize itself for performance. A page that lists many items, each with several fields, can generate a large number of database queries. If those queries are not tuned, with missing indexes or query patterns that scan more data than they need, response times grow as the volume of content grows.

This is why sites that used to feel fast become slow after a year of publishing. The code has not changed. The amount of data has. Queries that were quick against a small content set become a burden against a large one.

The fix is usually undramatic: add the indexes that are missing, rewrite the views and queries that scan whole tables, and cache the entities that are read most often. Uncached database work on every request adds up, and removing it tends to pay off quietly across the whole site.

Images served at their original size

This is one of the most common performance problems, and one of the easiest to resolve. An editor uploads a photo straight from a camera. Drupal stores the original and serves it directly. The browser downloads the full file and then shrinks it on screen for display. Every visitor pays the cost of that download, and on a mobile connection the difference is immediately visible.

Drupal has image styles that resize and compress images automatically, but they only help if they are configured for each image field and each display mode. On the sites we audit, it is rare to find one where at least one image field is not still serving originals.

The fix is to configure responsive image styles with a modern compressed format, lazy-load images below the fold, and set correct width and height attributes so the layout does not shift as images arrive. The combined effect is usually a noticeably lighter page for no loss in visual quality.

Too many modules doing too little

A typical Drupal site accumulates a large number of contributed modules over its life. Each one registers hooks, can add database tables, and may inject its own CSS and JavaScript. A good share of those modules are often enabled but unused: leftovers from features that were explored and abandoned, or dependencies of modules that were later removed.

Each unused module adds a small amount of overhead. Enough of them together add up to something measurable. We audit module usage and disable anything that is no longer actively needed. It is one of the least glamorous fixes available, and one of the more reliable.

A missing or misconfigured CDN

A content delivery network serves your static assets (CSS, JavaScript, and images) from servers close to your visitors. Without one, every asset is served from your hosting provider's single location, which adds network latency for visitors far away that no amount of code optimization can remove.

Most modern hosting includes CDN integration, so the problem is usually not the absence of a CDN but how it is set up: which paths to cache, for how long, how to handle authenticated users, and how to invalidate when content changes. A misconfigured CDN can be worse than none at all, because it can serve stale content or bypass the cache entirely. Getting the configuration right matters as much as having the CDN in the first place.

How we approach a slow Drupal site

We start with measurement, not assumptions.

That means looking at real visitor behavior, Core Web Vitals, page templates, request patterns, and the slowest parts of the experience rather than relying on a single synthetic score. It is worth looking at templates and request patterns before deciding anything needs rebuilding.

From there, we usually break the work into three layers.

First-wave fixes. The obvious but high-value issues: image handling, caching problems, unnecessary third-party weight, the worst queries, and the easiest technical wins.

Structural fixes. The things that improve long-term stability as well as speed: replacing problematic modules, improving infrastructure, simplifying rendering paths, or rethinking how the frontend is delivered.

Ongoing protection. Performance is not something a site achieves once and keeps forever. It stays healthy when somebody is watching it, measuring it, and stopping avoidable regressions from piling up again.

When a rebuild is actually warranted

Sometimes a rebuild really is the right answer. But that is usually because the platform has deeper structural problems, not because the homepage is slow by itself.

A rebuild becomes more reasonable when the site is also hard to change, difficult to deploy, badly modeled, operationally brittle, and carrying architectural decisions that no longer make sense. Performance is then one symptom of a wider issue.

The mistake is jumping to that conclusion before measuring what is actually wrong.

Why this matters commercially

Slow pages cost attention, trust, and conversion. But they also create internal drag. Teams become afraid to touch the site, every change feels risky, and discussions about improvement start drifting toward wholesale replacement because nobody trusts the current platform anymore.

When the real issue is technical drag rather than platform fit, a focused performance engagement is usually faster, cheaper, and far less disruptive than a rebuild. None of the fixes above requires a redesign. They require a systematic review of caching, queries, assets, modules, and infrastructure, with improvements that are measurable and that keep paying off as the content grows.

The better first question

Instead of asking "Do we need a new site?" the better question is usually "What is actually making this one slow?"

That question is cheaper to answer, and it often changes the entire direction of the decision.

If your Drupal site feels slow, the first useful step is not a redesign brief. It is a clear technical review of the bottlenecks, the likely wins, and whether the platform itself is really the thing holding the site back.

Share this article
Valentin Zsigmond
Written by
Valentin Zsigmond
Founder & Lead Engineer

Full-stack Drupal architect with almost two decades of experience leading large teams in enterprise environments. Founded Tilizy Digital to bring senior-level expertise directly to the organizations that need it. Mentor to dozens of Drupal developers and creator of SDX — a Drupal extension for building modern frontends with React and Vue.

Enjoyed this article?

If this resonated, imagine what we could do working together on your Drupal site.