Optymalizacja WooCommerce - szybszy sklep internetowy
WooCommerce może być wolny przy dużej liczbie produktów i ruchu. Dynamiczne strony, duża baza danych, ciężkie wtyczki - to wszystko spowalnia. Pokażę jak zoptymalizować sklep WooCommerce dla lepszej wydajności.
Krótka odpowiedź
1) cache (WP Rocket z WooCommerce, Redis),
2) optymalizacja obrazków produktów (WebP, lazy load),
3) czyszczenie bazy (transients, wygasłe sesje),
4) wyłączenie cart fragments AJAX,
5) hosting z PHP 8.1+ i OPcache. Cel: checkout poniżej 3 sekund.
Dlaczego WooCommerce jest wolny
Przyczyny:
- Dynamiczne strony (każdy request = zapytania DB)
- Cart fragments AJAX (aktualizacja koszyka na każdej stronie)
- Duża liczba produktów (10k+ = problem)
- Rozbudowana baza danych (zamówienia, klienci, meta)
- Ciężkie wtyczki (50+ pluginów)
Co spowalnia najbardziej:
- Strona produktu z wariantami
- Listing produktów (100+ na stronę)
- Checkout (walidacja, płatności)
- Koszyk (przeliczanie cen, wysyłki)
Cel optymalizacji:
- TTFB < 500ms
- LCP < 2.5s
- Checkout < 3s
- PageSpeed 70+ na mobile
Cache dla WooCommerce
WP Rocket (zalecany):
- Automatycznie wyklucza: koszyk, checkout, my-account
- Cache dla zalogowanych użytkowników (opcja)
- Delay JS, lazy load
- CDN integration
LiteSpeed Cache:
- ESI (Edge Side Includes) dla koszyka
- Osobny cache dla zalogowanych
- Private cache dla dynamicznych elementów
Redis Object Cache:
- Cache zapytań do bazy danych
- Wtyczka: Redis Object Cache
- Wymaga Redis na serwerze
- Drastyczne przyspieszenie dla dużych baz
Co NIE cachować:
- /cart/, /checkout/, /my-account/
- Cookies: woocommerce_cart_hash
- Dynamiczne ceny (np. zależne od użytkownika)
Wyłączenie Cart Fragments
Problem Cart Fragments:
- AJAX request na każdej stronie
- Aktualizuje ikonkę koszyka
- Spowalnia nawet puste strony
Wyłączenie (jeśli nie potrzebujesz):
```php
add_action('wp_enqueue_scripts', function() {
if (!is_cart() && !is_checkout()) {
wp_dequeue_script('wc-cart-fragments');
}
}, 11);
```
Wtyczka Disable Cart Fragments:
- Lub: Disable Cart Fragments AJAX
- Automatyczne wyłączenie
Alternatywa - lazy load koszyka:
- Ładuj koszyk dopiero po hover/klik
- Mini-cart w AJAX on demand
Optymalizacja bazy danych WooCommerce
Czyszczenie:
- Wygasłe sesje (wp_woocommerce_sessions)
- Transients WooCommerce
- Stare zamówienia w koszu
- Nieużywane warianty produktów
SQL do czyszczenia sesji:
```sql
DELETE FROM wp_woocommerce_sessions
WHERE session_expiry < UNIX_TIMESTAMP();
```
Indeksy w bazie:
- Sprawdź czy tabele mają indeksy
- WooCommerce dodaje automatycznie
- Przy dużych bazach: custom indexes
WP-CLI WooCommerce:
```bash
wp wc tool run clear_expired_transients
wp wc tool run db_update_routine
```
Limit zamówień do wyświetlenia:
- Admin → WooCommerce → Settings → Advanced
- Ogranicz liczbę zamówień w panelu