The most impactful php.ini change is max_execution_time. JekCMS's image processing pipeline can take 3–8 seconds per upload for large files, and the default on many shared plans is 30 seconds — enough for a single image, not enough for batch uploads. Set it to 90 seconds. The second critical value is memory_limit: 256MB is the practical minimum; 512MB is safer for sites with active media operations.

OPcache: The Silent Performance Killer

opcache.memory_consumption should be at least 128MB. Many shared hosting control panels configure this to 64MB, which causes frequent cache invalidation and is often the root cause of intermittently slow page loads that are difficult to reproduce. You can check current usage by creating a temporary PHP file that calls var_dump(opcache_get_status()).

MySQL Query Cache Conflict

For the database, disable MySQL's built-in query cache (query_cache_type=0 if your host allows it) and rely on JekCMS's application-level query cache instead. The two caching layers can produce inconsistent results when both are active. If you cannot modify MySQL settings, set QUERY_CACHE_ENABLED=false in your JekCMS environment file to disable the application cache and let MySQL handle caching alone.

Verifying GZIP and Browser Cache

Verify GZIP compression and browser caching are active with: curl -H "Accept-Encoding: gzip" -I https://yoursite.com/. The response should include Content-Encoding: gzip. If it does not, your host may require activating mod_deflate from the control panel. Without GZIP, HTML responses are typically 3–5× larger than they need to be.