Optymalizacja stron internetowych pod kątem wydajności to absolutny fundament. W sieci znajdziemy potężne, rozbudowane serwisy, które ładują się w ułamku sekundy, oraz proste wizytówki, które wczytują się w nieskończoność, frustrując odwiedzających.
Mógłbyś powiedzieć, że to kwestia potężnego serwera lub przepustowości łącza. Oczywiście sprzęt ma znaczenie, ale potężne Raspberry Pi 5 (wyposażone w dysk NVMe i szybki procesor ARM) ma aż nadto mocy, by obsłużyć ogromny ruch. Dlaczego więc strony działają wolno? Głównym winowajcą jest najczęściej brak optymalizacji oprogramowania – zarówno samej aplikacji (np. WordPressa), jak i środowiska serwerowego opartego na Apache.
Na typowym hostingu współdzielonym nie masz dostępu do konfiguracji rdzenia serwera. Konfiguracja jest tam uśredniona, by działała „jako tako” dla tysięcy klientów. Mając własną „malinkę”, masz pełną kontrolę i możesz zestroić system niczym bolid wyścigowy.
Higiena strony WWW (Frontend)
Większość z nas nie pisze stron od zera, lecz korzysta z gotowych systemów CMS (WordPress, PrestaShop). Są to potężne kombajny, które – jeśli o nie nie zadbasz – potrafią przeciążyć każdy serwer. Optymalizację zawsze zaczynaj od fundamentów aplikacji:
Nowoczesne formaty zdjęć i wideo:
Zapomnij o ciężkich plikach JPG czy PNG. W dzisiejszych czasach standardem są formaty WebP oraz AVIF, które oferują bezstratną jakość przy rozmiarze mniejszym o 50-70%. Żadne zdjęcie na Twojej stronie nie powinno przekraczać 150-300 KB. Zamiast hostować ciężkie filmy na Raspberry Pi, umieść je na YouTube lub Vimeo i jedynie osadź (embed) na stronie.
Minimalizm we wtyczkach:
Każda wtyczka to dodatkowy kod PHP do przetworzenia i kolejne zapytania do bazy danych. Zła, nieodpowiednio napisana wtyczka potrafi wydłużyć czas odpowiedzi serwera o kilka sekund. Usuń wszystko, co nie jest absolutnie niezbędne.
Czystość kodu (Formatowanie):
Nigdy nie wklejaj na stronę tekstów bezpośrednio z MS Word czy z innych stron. Przenosisz w ten sposób ukryte, śmieciowe style CSS. Jeśli musisz skopiować tekst, przepuść go najpierw przez zwykły Notatnik, aby wyczyścić formatowanie.
Ochrona przed botami: Dlaczego .htaccess może „zabić” Apache?
Strona może działać wolno, ponieważ Twój serwer jest nieustannie skanowany przez toksyczne boty (np. agresywne skanery SEO, boty spamujące z krajów takich jak Rosja czy Chiny).
W wielu starych poradnikach znajdziesz instrukcję: „Zainstaluj moduł GeoIP w Apache i wklej tysiące adresów IP do pliku .htaccess, aby je zablokować”. Z inżynieryjnego punktu widzenia to dziś katastrofa dla wydajności.
Serwer Apache ma to do siebie, że przy domyślnej konfiguracji czyta i analizuje plik .htaccess przy każdym pojedynczym zapytaniu o plik. Jeśli wkleisz tam 500 linijek blokad IP, a użytkownik wejdzie na stronę, która ma 40 zdjęć, procesor Raspberry Pi będzie musiał przeanalizować te reguły setki razy w ciągu sekundy! W ten sposób zablokujesz boty, ale jednocześnie „udusisz” własny serwer.
Jak robić to poprawnie w 2026 roku?
Geoblokowanie i ochrona IP: Zostaw to zaporze sieciowej! Zamiast męczyć Apache’a, użyj narzędzia CrowdSec . CrowdSec odetnie złośliwy ruch na poziomie jądra systemu, zanim w ogóle dotrze on do serwera WWW, zużywając 0% zasobów procesora.
Kiedy używać .htaccess do blokowania? Tylko do pojedynczych, specyficznych reguł (np. zablokowanie konkretnego złośliwego User-Agenta). Należy to robić za pomocą szybkiego modułu mod_rewrite.
Prawdziwa magia: Cachowanie treści (Pamięć Podręczna)
Za każdym razem, gdy użytkownik klika w link, serwer wykonuje ciężką pracę: uruchamia interpreter PHP, łączy się z bazą danych, generuje kod HTML i wysyła go do przeglądarki.
Cache (pamięć podręczna) omija ten proces, drastycznie zmniejszając użycie procesora (Load) i pamięci RAM.
Wyróżniamy trzy główne warstwy nowoczesnego cache’u na serwerze Apache:
Cache Przeglądarki (Browser Cache przez mod_expires)
Zamiast wysyłać to samo logo przy każdym kliknięciu, Apache może poinstruować przeglądarkę internauty: „Zapisz ten obrazek i plik CSS na swoim dysku i nie pytaj o niego przez najbliższy rok”.
Aby to zadziałało, włącz moduł w systemie:
sudo a2enmod expires
sudo systemctl restart apache2
Następnie dodaj na samej górze pliku .htaccess swojej strony poniższy blok:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/avif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
OPcache (Krytyczny dla PHP)
Domyślnie PHP przy każdym zapytaniu kompiluje kod źródłowy do postaci zrozumiałej dla maszyny. OPcache to wbudowany mechanizm, który trzyma skompilowany kod w pamięci RAM. Zawsze upewnij się w konfiguracji PHP (plik php.ini), że dyrektywa opcache.enable=1 jest włączona. To darmowe przyspieszenie skryptów o kilkadziesiąt procent.
Object Cache (Serwer Redis zamiast Memcached)
W przeszłości królowały systemy takie jak Memcached czy APCu. Dziś branżowym standardem jest Redis. Redis przejmuje na siebie pamiętanie skomplikowanych wyników zapytań do bazy danych. Jeśli wygenerowanie strony głównej wymaga 50 zapytań SQL, Redis zapisze ten wynik w pamięci RAM. Następny odwiedzający nie obciąży bazy danych w ogóle.
Instalacja i konfiguracja Redisa na Raspberry Pi:
Zainstaluj serwer Redis oraz rozszerzenie dla Twojej wersji PHP (np. 8.3):
sudo apt install redis-server php8.3-redis
Zanim z niego skorzystamy, musimy go dostroić. Otwórz plik konfiguracyjny /etc/redis/redis.conf.
Raspberry Pi 5 korzysta z karty microSD lub dysku NVMe. Redis domyślnie zrzuca zawartość RAM-u na dysk fizyczny, by zachować dane po restarcie. Ponieważ używamy go tylko jako nietrwałej pamięci podręcznej, ciągłe zapisy na dysk niepotrzebnie zużywają nasz nośnik (skracają jego żywotność).
Znajdź i zmień następujące parametry w pliku konfiguracyjnym:
# Zablokuj dostęp z zewnątrz (bezpieczeństwo)
bind 127.0.0.1
# Ustaw limit pamięci RAM dla cache'u (np. 256MB na średniego bloga w zupełności wystarczy)
maxmemory 256mb
# Co zrobić, gdy zabraknie miejsca w wyznaczonym limicie?
# Usuwaj najstarsze, najrzadziej używane klucze.
maxmemory-policy allkeys-lru
# WYŁĄCZENIE ZAPISU NA DYSK (Krytyczne dla oszczędzania kart SD/dysków NVMe)
save ""
Po zapisaniu pliku, zrestartuj usługę poleceniem:
sudo systemctl restart redis-server
Aby Twój CMS (np. WordPress) zaczął z niego korzystać, musisz w jego panelu zainstalować wtyczkę łączącą, np. Redis Object Cache, i po prostu ją aktywować. Różnicę w szybkości ładowania panelu administracyjnego poczujesz natychmiast.
Podsumowanie
Optymalizacja to proces wielowarstwowy. Nie da się ukryć bałaganu w kodzie strony (ciężkich zdjęć i dziesiątek wtyczek) nawet najszybszym serwerem. Jednak połączenie mądrego zarządzania plikiem .htaccess, włączenia modułu mod_expires w Apache oraz wykorzystania potęgi pamięci RAM (Redis + OPcache) sprawi, że wskaźnik obciążenia (Load Average) na Twoim Raspberry Pi spadnie niemal do zera. W efekcie serwer będzie w stanie obsłużyć tysiące odwiedzających dziennie, bez najmniejszej zadyszki.

[Wstęp] Własny serwer na Raspberry Pi 5: Kompletny przewodnik krok po kroku
[Część 1] Wybór akcesoriów i przygotowanie sprzętu
[Część 2] Instalacja LAMP (Apache, MariaDB, PHP)
[Część 3] Konfiguracja domeny i DNS dla serwera
[Część 4] Panel ISPConfig 3: Instalacja i zarządzanie hostingiem
[Część 5] [Jesteś tutaj] Optymalizacja wydajności: Jak przyspieszyć strony WWW
[Część 6] Bezpieczeństwo serwera: Jak skutecznie zabezpieczyć Raspberry Pi 5
[Część 7] Cloudflare: Darmowy SSL i dodatkowa ochrona
[Część 8] Monitorowanie serwera: Instalacja Monit