Większość właścicieli WordPress uważa że performance problem to wtyczka. Mówią „zainstalmy WP Super Cache” i gotowe. To powierzchowne podejście. Prawda jest taka — backend optymalizacja to 80% pracy. Cache’u to tylko ostatnie 20%.
Pracując z infrastrukturą setek WordPress instancji, widzę ciągle te same błędy: nieoptymalne queries, brak indexów, słaba konfiguracja PHP, zbyt mało RAM. Każdy z tych problemów może 10x zwolnić stronę.
Baza danych — domownicy najczęstszych problemów
Każda strona robi setki zapytań do bazy. Problem: wiele z nich jest redundantnych. Zainstaluj Query Monitor (wtyczka). Zobaczysz że jedna query wykonuje się 10 razy na jednej stronie. To szaleństwo.
Rozwiązanie: Object cache. Redis lub Memcached. Cachują wyniki queries w RAM zamiast w bazie. Rezultat: zapytania które wcześniej zajmowały 200ms teraz zajmują 1ms. Różnica jest kolosalna.
Case study: Klient z 150k visitors/miesiąc. Czas ładowania 3.5 sekundy. Zainstalowaliśmy Redis Object Cache. Czas ładowania spadł do 0.9 sekundy. Bez żadnych zmian w kodzie. Tyle możliwości czeka.
MySQL — indexes to klucz
Baza danych bez indexes to jak czytanie książki bez spisu treści — musisz przejrzeć każdą stronę. Indexes są właśnie spis treści.
Jeśli queryujesz post_author, post_status, post_date — dodaj indexes na te kolumny. MySQL będzie szukał szybciej. Setup:
ALTER TABLE wp_posts ADD INDEX idx_post_author (post_author); ALTER TABLE wp_posts ADD INDEX idx_post_status (post_status);
Efekt: query które zajmowała 500ms teraz zajmuje 10ms. Nie wierzysz? Sprawdź sam w EXPLAIN.
PHP Opcode cache — tajniczy booster
Każdy request: PHP konwertuje kod na opcode, wykonuje, usuwa. Konwersja to zajmuje czas. Opcode cache (OPcache) cachuje konwersję.
Większość hostingów ma OPcache. Ale sprawdź php.ini: opcache.memory_consumption powinno być minimum 128MB. Jeśli 32MB, zwiększ.
Efekt: 50-70% speedup na PHP level. To nie placebo.
Monitoring — wiesz gdzie problem?
Bez danych to strzały na ślepo. Zainstaluj New Relic czy Blackfire. Profile’uj aplikację. Odkryj dokładnie które funkcje są powolne, które queries najczęściej się wykonują.
Wtedy optymalizujesz mądrze — nie wierzysz na wyobraźnię tylko na dane.