eduardweb.
Plugin-uriIntermediar#wordpress#woocommerce#mysql#redis#cloudflare

Cum am coborât sub 1s load time pe un WooCommerce cu 15.000 de produse

De Diana Oprea, 24 mai 2026 · 5 vizualizări · 2 like-uri

Postat 24 mai 2026
sql
-- 1. Curățarea transient-urilor vechi din wp_options
DELETE FROM `wp_options` 
WHERE `option_name` LIKE '_transient_%' 
OR `option_name` LIKE '_site_transient_%';

-- 2. Ștergerea sesiunilor WooCommerce expirate
DELETE FROM `wp_options` 
WHERE `option_name` LIKE '_wc_session_expires_%' 
AND CAST(`option_value` AS UNSIGNED) < UNIX_TIMESTAMP();

-- 3. Adăugarea indexului pe autoload pentru a accelera interogările de start
ALTER TABLE `wp_options` ADD INDEX `autoload_idx` (`autoload`, `option_name`);

Dacă ai un magazin WooCommerce mai mărișor, știi deja că se mișcă îngrozitor de greu imediat ce începe să crească traficul. Am reușit recent să aduc un magazin cu 15.000 de produse și campanii active de marketing de la un timp de încărcare de peste 4 secunde la puțin sub 1 secundă. Nu e nicio magie la mijloc, ci doar trei chestii puse la punct: Redis, Cloudflare APO și curățenie în interogările bazei de date.

Redis Object Cache: Salvarea pentru userii logați

Pluginurile clasice de cache (WP Rocket, LiteSpeed Cache) sunt excelente pentru vizitatorii anonimi. Dar în momentul în care un user se loghează, adaugă ceva în coș sau trece la checkout, cache-ul de pagină se dezactivează. Atunci începe coșmarul: WooCommerce începe să facă sute de interogări în baza de date pentru a prelua metadatele produselor, prețurile și sesiunile.

Am rezolvat asta folosind Redis ca Object Cache. Am instalat pluginul gratuit al lui Till Krüss (Redis Object Cache) și am legat WordPress-ul la o instanță locală de Redis.

Trade-off-ul sincer: Redis mănâncă memorie RAM. Pe un VPS de 4GB, instanța de Redis mi-a ocupat rapid în jur de 400-500MB de RAM doar pentru a ține cheile de cache ale produselor. Dacă ai un server la limită, s-ar putea să te trezești cu crash-uri de Out of Memory. Totuși, reducerea TTFB-ului (Time to First Byte) pentru clienții logați a fost masivă: de la 1.8 secunde la doar 420 milisecunde.

Cloudflare APO: Edge Caching pe bune pentru restul lumii

Pentru vizitatorii nelogați, am vrut ca serverul nostru VPS să nu muncească deloc. Am activat Cloudflare APO (Automatic Platform Optimization). Costă doar 5 dolari pe lună pentru planurile gratuite de Cloudflare și este probabil cea mai bună investiție pe care o poți face.

APO pune la cache paginile HTML direct pe serverele edge ale Cloudflare din întreaga lume (inclusiv București). Practic, când un vizitator nou intră pe site, pagina îi este servită instant în 50-80ms, fără ca cererea să mai ajungă la serverul tău PHP.

Atenție la o problemă: Dacă ai elemente dinamice în header (cum ar fi un mini-coș care ar trebui să fie gol dar arată produse din sesiunea altcuiva), APO le va cache-ui greșit dacă nu folosești fragmente AJAX (WooCommerce Cart Fragments). Eu a trebuit să rescriu widget-ul de mini-coș să se încarce exclusiv prin AJAX după încărcarea paginii.

Curățenia în baza de date și indexarea wp_options

WooCommerce folosește tabelele standard de WordPress, ceea ce e o mizerie din punct de vedere arhitectural. Tabela wp_options tinde să explodeze din cauza transient-urilor expirate și a sesiunilor vechi. La magazinul de care vă zic, tabela wp_options avea 1.2GB.

Primul pas a fost să șterg toate transient-urile orfane și să optimizez tabelele. Apoi, am adăugat un index custom pe coloana autoload din wp_options. Implicit, WordPress nu are index pe această coloană, iar la fiecare încărcare de pagină se face un SELECT masiv care scanează toată tabela pentru a vedea ce opțiuni trebuie încărcate automat.

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

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