eduardweb.
Plugin-uriIntermediar#performance#wordpress#woocommerce#redis

Cum am coborât sub 1.2s pe un WooCommerce cu 12k produse: Redis, APO și query-uri criminale

De Ștefan Iliescu, 3 iul. 2026 · 12 vizualizări · 3 like-uri

Postat 3 iul. 2026
sql
-- Curățarea rapidă a transient-urilor expirate din wp_options
-- ATENȚIE: Faceți backup înainte de a rula în producție!

DELETE a, b FROM wp_options a 
LEFT JOIN wp_options b ON b.option_name = CONCAT('_transient_timeout_', SUBSTRING(a.option_name, 12)) 
WHERE a.option_name LIKE '_transient_%' 
AND b.option_value < UNIX_TIMESTAMP();

Am preluat anul trecut un magazin WooCommerce destul de măricel, pe la vreo 12.000 de produse și sute de variații. Se mișca îngrozitor. TTFB-ul pe paginile de categorie trecea lejer de 2.5 secunde, iar în campaniile de marketing serverul (un VPS destul de bunicel, cu 8 nuclee) pur și simplu intra în genunchi. Proprietarul pierdea bani și era disperat.

După două săptămâni de debug și teste, am reușit să coborâm timpul total de încărcare la 1.1s și să salvăm cam 60% din resursele CPU. Nu există o singură pastilă magică, ci a fost un combo din trei direcții: Redis, Cloudflare APO și optimizarea bazei de date.

1. Redis Object Cache – De ce nu e opțional

Fără caching de obiecte în memorie, WordPress interoghează baza de date pentru orice prostie la fiecare request. În WooCommerce, asta înseamnă interogări repetate pentru metadatele produselor, opțiunile de livrare și setările de taxe.

Am instalat Redis pe server și am configurat plugin-ul Redis Object Cache (cel gratuit de la Till Krüss e excelent). Diferența a fost instantanee. Query-urile SQL pe pagină au scăzut de la 180 la sub 30.

Trade-off-ul sincer: Dacă ai plugin-uri prost scrise care nu folosesc corect wp_cache_set sau invalidează cache-ul aiurea, riști să le arăți clienților stocuri vechi sau prețuri neactualizate. Trebuie să testezi intens fluxul de adăugare în coș și checkout după ce pornești Redis.

2. Cloudflare APO – Caching la edge pentru 5 dolari

Pentru site-urile de prezentare, caching-ul de pagină e simplu. La WooCommerce, e un coșmar din cauza sesiunilor dinamice (coș, wishlist, cont client).

Aici a intrat în scenă Cloudflare APO (Automatic Platform Optimization). Costă 5$ pe lună (dacă ești pe planul free) și face cache la paginile de produs și categorii direct pe serverele Cloudflare de la marginea rețelei (edge).

APO știe nativ de WooCommerce. Când un utilizator adaugă un produs în coș, se setează cookie-ul woocommerce_items_in_cart și Cloudflare face instant bypass la cache pentru acel user, servind paginile dinamic. Pentru restul lumii, paginile se încarcă în sub 100ms pentru că nu mai ating deloc serverul tău.

3. Curățenia în DB și indexarea postmeta

WooCommerce folosește tabelul wp_postmeta pentru absolut orice (prețuri, stoc, greutate). Când tabelul ăla trece de câteva milioane de rânduri, interogările cu meta_query (cum sunt filtrele de preț sau atribute) devin criminale.

Am făcut trei lucruri rapide:

  1. Am șters toate tranzientele expirate (transients) direct din baza de date. Aveam peste 80.000 de rânduri inutile în wp_options.
  2. Am curățat reviziile vechi de produse și sesiunile WooCommerce abandonate.
  3. Am adăugat un index custom pe meta_key în wp_postmeta pentru că cel default din WordPress nu e optimizat pentru interogări complexe de tip JOIN.

Rezultatul? Un site care zboară și un server care respiră ușurat chiar și în timpul newsletterelor trimise la 50.000 de oameni.

Voi ce folosiți pentru WooCommerce? Ați trecut pe HPOS (High-Performance Order Storage) în versiunile noi? Cum s-a simțit la viteză?

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.