Stack tuning
- Baseline and before and after timings
- Page cache rules for your platform
- PHP workers, OPcache and Redis
- MySQL settings and slow query review
- One server, one site
LiteSpeed cache rules, PHP workers and OPcache, Redis, MySQL and search tuned to your real traffic, with timings measured before and after. For stores and sites that slow down under load. From €490.
Page cache HIT after three layers. The tuned request never reaches PHP, Redis or MySQL. For guest pages, cache rules beat raw server power.
Measure my real timings| Layer | As found | Tuned |
|---|---|---|
| CDN | 90 msNo edge: TLS handshake to a distant origin | 90 msAs found, not tuned in this model |
| Web server | 45 msApache prefork with mod_php, no Brotli | 12 msLiteSpeed with HTTP/3 and Brotli |
| Page cache | 0 msNone: every request runs PHP | 8 msLSCache HIT, served from memory |
| PHP | 310 msNo OPcache, two workers queueing | 0 msSkipped: answered by the page cache |
| Redis | 0 msNot installed | 0 msSkipped: answered by the page cache |
| Database | 360 msinnodb_buffer_pool_size at the 128 MB default | 0 msSkipped: answered by the page cache |
| Time to first byte | 805 ms | 110 ms |
Switch layers on for the lower lane, change the request type, then race again. The times are an example model of one store, chosen to show where each layer sits; your own numbers come from measuring your server.
Speed comes mostly from deciding what must never be cached. These are my starting rules per platform; every site is then tuned to its own traffic and plugins.
| What | Cached for | How long | Bypassed or purged when |
|---|---|---|---|
| Product and category pages | Guests with an empty cart | 1 week, purged on change | Purged when price, stock status or the product changes |
| Cart, checkout, my account | Nobody | Never | Bypassed by URL and by the woocommerce_items_in_cart and wp_woocommerce_session_ cookies |
| Mini cart and basket counter | Each visitor | Loaded separately | Pulled in with ESI or a small AJAX request so the page around it stays cacheable |
| Product lookups, sessions, transients | Everyone, in Redis | Until changed | Keeps cart and checkout from waiting on MySQL, the pages no page cache can help |
| Filtered and sorted listings | Guests | Shorter than products | Every filter combination is a new entry, so bots are kept out of filter URLs |
The cart cookie. If the cache ignores it, one shopper can be shown another shopper’s basket, or a page that says the basket is empty.
One layer at a time, on staging first, with the same request timed before and after each change.
opcache.memory_consumption never fills, worker count worked out from RAM per worker, slow log on.maxmemory and an eviction policy set, separate databases for cache and sessions, hit ratio checked.innodb_buffer_pool_size sized to the working set, slow query log at one second, missing indexes added, autoloaded options trimmed.LIKE queries for large WooCommerce catalogues.# before: time to first byte, guest product page admin@web1:~$ curl -s -o /dev/null -w 'ttfb %{time_starttransfer}s\n' https://shop.example.fi/product/oak-chair/ ttfb 0.812s # after: page cache rules, OPcache, Redis admin@web1:~$ curl -s -o /dev/null -w 'ttfb %{time_starttransfer}s\n' https://shop.example.fi/product/oak-chair/ ttfb 0.094s admin@web1:~$ redis-cli info stats | grep keyspace keyspace_hits:1843920 keyspace_misses:61377 admin@web1:~$ php -i | grep opcache.memory_consumption opcache.memory_consumption => 256 => 256
Fast for one visitor, slow at the sale? Start with a measured baseline.
Get a stack tuning quoteNothing changes on the live server until the change has been timed on staging, and every setting is written down.
Time to first byte for key pages from the access logs, slow PHP and SQL logs, memory and CPU at your busiest hour.
Find the slowest layer for each request type: guest pages, cart, checkout, search and the admin.
One layer at a time on staging: cache rules, PHP workers and OPcache, Redis, MySQL, search.
Your peak traffic plus headroom replayed against staging, so the gain holds when the sale starts.
Before and after timings, every changed setting with its reason, and what to watch next.
I would rather tell you before the job than in the report.
Fixed prices in euros, excluding VAT 25.5%. You keep root, every account and the written list of settings.
If the baseline shows the server is not your bottleneck, I stop there and you pay only for the measurement, with the findings in writing. owner to confirm
Both are fast; the right one depends on your stack. LiteSpeed reads .htaccess, fits cPanel servers and has its own page cache plugins for WordPress, WooCommerce and Magento, but the Enterprise edition needs a paid licence. Nginx suits custom VPS set-ups and Laravel. I tune either and only switch with a measured reason.
Often a large part of it, not always all. Full-page cache, Redis, OpenSearch, PHP workers and MySQL settings fix server-side slowness. If a module adds hundreds of queries or a block disables the full-page cache, the code needs fixing too. See Magento development; the baseline shows which applies.
For full tuning, yes: root or sudo over SSH, with a key I add and you can remove at any time. With only cPanel or hosting-panel access I can still tune page caching, the PHP settings your plan allows, the application and the database, and write down exactly what to ask your host for.
Send the site address and which pages feel slow: product pages, cart, checkout or search. You get a written fixed price within one working day.
Prefer email? Write to [email protected]
Pikselipolku is an independent studio and is not affiliated with cPanel, LiteSpeed or any other product named here.