Drupal and Joomla can be resource-intensive without proper tuning — this guide covers the key optimizations specific to these platforms, beyond general server tuning.
Enable OPcache (Essential for Both Platforms)
sudo nano /etc/php/8.2/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
validate_timestamps=0 maximizes performance but requires manually clearing OPcache after deployments — appropriate for production, less convenient during active development.
Enable Drupal's Built-In Caching
Under Configuration → Development → Performance, enable page caching and aggregate CSS/JavaScript files — basic but meaningful improvements with minimal effort.
Enable Joomla's Built-In Caching
Under System → Global Configuration → System, enable caching (Conservative or Progressive, depending on your site's dynamic content needs).
Add Redis for Object/Cache Storage
Both platforms support Redis as a caching backend via contributed modules/extensions — see How to Install and Secure Redis on Ubuntu & Debian for the base setup, then configure the platform-specific Redis integration module.
Configure a Reverse Proxy Cache (Varnish)
For anonymous/public page views, a reverse proxy cache like Varnish sitting in front of Nginx/Apache can serve cached pages without hitting PHP or the database at all — particularly effective for content-heavy sites with substantial anonymous traffic.
Optimize Database Queries
Both platforms can generate expensive queries, especially with many contributed modules/extensions active — use each platform's built-in performance/query logging tools to identify and address slow queries, and see How to Tune MySQL/MariaDB Performance for a VPS for general database tuning.
Aggregate and Minify CSS/JavaScript
Both Drupal and Joomla support combining and minifying frontend assets — enable this in production (usually part of the caching settings mentioned above) to reduce the number of requests and payload size per page load.
Optimize Images
See How to Optimize Images for Web Performance — both platforms support responsive image styles/presets; configure these properly rather than serving oversized images at every breakpoint.
Review Active Modules/Extensions for Performance Impact
Every active module/extension adds some overhead — periodically review whether all installed ones are genuinely necessary, disabling or removing ones providing marginal value at a real performance cost.
Monitor Performance Over Time
See How to Set Up Prometheus and Grafana for VPS Monitoring — track response times and resource usage to catch performance regressions early, especially after adding new modules/extensions or content growth.
Sizing Your VPS Appropriately
Both platforms benefit from adequate RAM for OPcache and object caching — 4 GB RAM is a reasonable minimum for a production Drupal or Joomla site with meaningful traffic, scaling up for larger, more complex sites.
Common Errors
Site remains slow despite enabling caching — verify caching is actually configured correctly (not just toggled on) and that OPcache is properly enabled at the PHP level, which is often the more impactful of the two.
Continue Reading
- How to Install and Secure Redis on Ubuntu & Debian
- How to Tune MySQL/MariaDB Performance for a VPS
- How to Set Up Prometheus and Grafana for VPS Monitoring
Browse more articles in CMS Platforms Beyond WordPress.