Skip to main content

Performance

eCMS9 runs on ordinary shared hosting as well as on your own server. How fast it runs depends on how PHP, the web server and the database are configured. You don't have to guess: the admin panel checks it for you under Settings → System information, section "Performance".

Every row carries a badge:

BadgeMeaning
OKConfigured well, nothing to do.
!! (red)Critical: the site is noticeably slower than it could be. Fix these first.
! (yellow)Worth fixing when you can.
i (blue)A tip. It helps, but not every site needs it.

Many rows have a "Settings" toggle with ready-made lines to paste into your hosting panel or send to your host's support.

The checks run live every time the page opens: change a hosting setting, reload the page and you see the result.

PHP version​

eCMS9 supports PHP 8.2–8.5, with 8.2 as the minimum. For new installations, 8.5 is recommended after checking module compatibility. The admin performance indicator may recommend a newer version; this does not change the product minimum.

Switch the version in your hosting panel (cPanel → "Select PHP Version", CyberPanel → "Change PHP", Plesk → "PHP Settings") or ask support.

OPcache​

OPcache keeps compiled PHP code in memory. Without it PHP re-reads and re-parses thousands of files on every request — the single biggest speed loss possible. If OPcache is off, the section shows it in red.

Even when it is on, the stock limits are often too small: the system plus templates is about 9,000 files, while the default max_accelerated_files is 10,000. Recommended values:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
realpath_cache_size=4096K
realpath_cache_ttl=600

Keep validate_timestamps=1: core and module updates are then picked up without restarting PHP.

On shared hosting these lines go into "PHP Options" / php.ini / .user.ini (whichever your host offers). If you have no access, send the lines to support.

OPcache preload​

Only for your own server or VPS. PHP loads the core into memory once at start-up, so requests no longer pull it in. The gain is a few milliseconds per request. Shared hosting usually doesn't allow it, so a blue badge there is normal.

opcache.preload=/path/to/app4/preload.php
opcache.preload_user=<site user>

Changing preload requires a PHP restart — and so does a core update, because preload keeps the old files in memory until then.

Server page cache​

The largest win for visitors: a guest's page is served by the web server from cache, without PHP or the database.

  • LiteSpeed / OpenLiteSpeed — turn on LSCache for the site (a single switch in CyberPanel and most LiteSpeed hosts). eCMS9 tells the cache what it may store: the cart, the customer account and the admin panel are never cached.
  • Nginx / Apache without LiteSpeed have no full page cache out of the box. Cloudflare (below), a LiteSpeed host or our VPS will help.

Cloudflare​

Cloudflare's free plan gives you a CDN (static files served from the node nearest the visitor), Brotli compression, HTTP/2 and HTTP/3, and bot protection.

  1. Connect your domain to Cloudflare (change the NS records at your registrar).
  2. Install the Cloudflare module from Modules → Module store: it purges Cloudflare's cache whenever you change products, prices or pages.

If the site is already behind Cloudflare but the module is missing, the section shows a yellow badge: after changes visitors may see an outdated page.

The "HTTP protocol" row shows how browsers talk to the server. HTTP/1.1 loads files one after another; HTTP/2 loads them in parallel. Your host enables it (HTTPS required), or Cloudflare does it automatically.

Data cache and sessions (Redis)​

By default the cache and visitor sessions live in files. That works everywhere, but for large catalogues and under load memory is faster. If Redis, Memcached or APCu is available, the section suggests a line for the .env file in the site root:

cache.handler = redis

Sessions in Redis (fewer locks when a visitor opens several tabs):

session.driver = 'CodeIgniter\Session\Handlers\RedisHandler'
session.savePath = 'tcp://127.0.0.1:6379'

Ask your host for the Redis address: on shared hosting it is often a socket rather than 127.0.0.1:6379.

Database​

  • Table engine. MyISAM tables lock entirely on every write. The system converts them to InnoDB in the background via the scheduler — it only needs the scheduler to be running.
  • Database memory (innodb_buffer_pool_size). When the database is larger than this memory, some reads hit the disk. On your own server raise it to the value the section suggests; on shared hosting your host controls it.

Images​

Modern WebP and AVIF formats are two to three times lighter than JPEG at the same quality. The section checks whether PHP can produce them (GD or Imagick) and whether the Pixozip module is installed to compress images and serve each browser the lightest format.

Optimizer module​

The Optimizer works on the page the browser receives: it combines and minifies CSS and JS, defers scripts, adds image dimensions and lazy loading, and inlines critical CSS. System information audits five specific checks and tells you, for each, whether it's done and by what:

  • WebP/AVIF — served by the Pixozip module, not by the Optimizer itself; if Pixozip isn't installed, the row links to the module store.
  • Lazy-load — loading="lazy" / decoding="async" on every image except the first content image (your LCP).
  • Image dimensions (CLS) — local images without width/height get their real size added, so the layout doesn't jump while loading.
  • font-display — font-display: swap added to @font-face, so text shows before the font finishes loading.
  • Precompressed builds — combined CSS/JS also shipped as gzip, and brotli when the PHP build on your hosting has the brotli extension.

If the Optimizer's master switch is off, the row says so and links to the module settings — none of the five checks run without it.

Turn optional Optimizer features on one at a time and check the storefront: some themes or third-party widgets rely on a particular script order.

Other checks​

  • PHP server mode — how PHP is attached to the web server. LiteSpeed LSAPI, PHP-FPM and FastCGI are fast. Plain CGI starts PHP from scratch on every request — ask your host to change it. FrankenPHP is supported in classic mode; worker mode is not supported by the core yet.
  • PHP memory limit — at least 256M, otherwise imports, feeds and reports may stop half-way.
  • Xdebug — a debugging tool that slows PHP down several times. It must not be loaded on a live site.
  • Environment — must be production. development shows technical errors to visitors and runs slower.
  • Config cache — on by default, saves 10–45 ms on every request.
  • Background tasks — whether the scheduler is running.

Developer mode​

At the bottom of the section, "Turn on for 30 min" shows the debug toolbar (response time, SQL queries, memory) in your browser only: visitors see nothing and no files need editing. It switches itself off after 30 minutes, or use "Turn off".

Want it even faster?​

We can tune a server specifically for eCMS9 or provide a ready VPS: PHP 8.5, OPcache, Redis, page cache, HTTP/3 — with a guaranteed speed-up. Order it in your customer account.

The offer in the admin panel can be hidden with "Hide this offer" and brought back from the same place.