Z tego artykułu dowiesz się co wpływa na szybkość ładowania strony internetowej. Jak zoptymalizować Wordpress i odchudzić ze zbędnych linijek kodu i wtyczek. Jak powinny być zoptymalizowane obrazy, baza danych dla Wordpress by szybkość ładowania była na zadowalającym poziomie dla użytkownika oraz dla nowego algorytmu Google Core Web Vitals.
Spis treści:
Czas wczytywania strony internetowej to jeden z pierwszych jej elementów, który odbiera użytkownik. Nawet najlepiej zaprojektowana i funkcjonalna strona nie zda się na nic jeśli zniechęcony długim ładowaniem odbiorca po prostu z niej wyjdzie.
Warto podjąć przynajmniej kilka podstawowych kroków które można wykonać samodzielnie by odczuć różnicę na prędkości i aby strony internetowe wykonane na Wordpressie osiągały znacznie lepsze wyniki w testach analitycznych.
Spadek konwersji, a optymalizacja strony internetowej
Spadek konwersji odnotujemy dla urządzeń mobilnych oraz odczujemy pośrednio na wynikach organicznych w wyszukiwarce Google w przypadku gdy strona będzie ładować się zbyt długo.
Jeżeli prowadzisz blog zobacz jak tworzyć spis treści w Wordpress
Aby użytkownik w ogóle znalazł się na naszej stronie musi być ona odpowiednio wysoko pozycjonowana w wynikach wyszukiwania Google. Poprawna optymalizacja, zapewnienie szybkiego wczytywania i działania serwisu ma znaczenie też tutaj, gdyż prędkość ładowania strony jest jednym z kryteriów do obliczania rankingu w wyszukiwarce. Dlatego też podczas tworzenia i zarządzania stroną, powinniśmy przykładać dużą uwagę do jej szybkości.
Zobacz test wtyczki WP Super Cache - przyśpiesz Wordpress dzięki cache strony
Czas, który upływa momentu wpisania adresu URL strony lub kliknięcia linku do wyświetlenia gotowej strony użytkownikowi można zmierzyć za pomocą kilku kluczowych wskaźników. Zobacz test wtyczki cache WP Super Cache
Są to:
Zapewniamy opiekę i administrację Twoją stroną internetową w wygodnych i elastycznych pakietach godzinowych.
Więcej o usłudze opieka Wordpress
Chcesz nauczyć się skutecznie prowadzić stronę na Wordpress zapisz się na szkolenie online z Wordpressa.
Są różne możliwośći napisania / kodowania / tego samego projektu graficznego. Można wykonać szablon wordpress czytelne z minimalną ilością kodu JavaScript oraz CSS, a może go być zbyt dużo (często w gotowych szablonach), który zbyt obciąża sposób odczytania strony i jej renderowania.
Oprócz samego kodu HTML strony, ważną jej częścią są także wszystkie podlinkowane zasoby statyczne. Na typowej stronie są to arkusze stylów CSS, pliki webfontów oraz skrypty JavaScript.
Zasoby blokujące renderowanie
Wymienione powyżej typy plików to zasoby blokujące renderowanie (ang. render-blocking resources). Zbyt duży rozmiar tych zasobów powoduje wydłużenie ładowania się drzewa DOM, co pociąga za sobą powolne wyświetlanie strony.
Zobacz nasz skuteczny poradnik w którym omawiamy co wpływa na bezpieczeństwo wordpress i co zrobić by stał się maksymalnie bezpieczny.
Zobacz tworzenie stron internetowych Wordpress, realizowane w naszej agencji digital.
W tym artykule skupimy się na technicznej stronie wykonania kodowania szablonu dla Wordpress.
Ważne. Przed planowanymi pracami warto wcześniej wykonać kopię zapasową strony i wordpressa.
Zanim przystąpimy do optymalizacji i prób przyspieszenia strony, musimy zidentyfikować czynniki, które mają największy wpływ na jej wolne ładowanie. Analizując wykonaną stronę lub stronę, którą należy zoptymalizować pierwszą czynnośią jest sprawdzenie jej programami analitycznymi by sprawdzić sposób wykonania kodowania HTML oraz samego wdrożenia Wordpress.
Najważniejsze, ze względu na pozycjonowanie, narzędzie do testowania witryny. Pokazuje zarówno zagregowany wynik dla urządzeń mobilnych i desktopów, jak i poszczególne parametry składowe wraz z informacją, które z nich wymagają poprawy. Wyniki narzędzia google mają bezpośredni wpływ na ranking SEO, dlatego warto skupić się na jak najwyższej punktacji.
Pokazuje kluczowe wskazówki, które ułatwią wyeliminowanie największych czynników wpływających na wolne ładowanie witryny. Pozwala też na analizę tzw. waterfall, czyli wykresu ładowania poszczególnych zasobów w czasie, co może być pomocne przy znalezieniu tych, które mogą ładować się zbyt długo.
Pozwala ocenić prędkość DNS oraz wartość wskaźnika TTFB z różnych miejsc na świecie, co może być przydatne w szczególności, gdy naszą witrynę kierujemy do odbiorców w różnych krajach.
Pozwala dokładnie przeanalizować kolejność i prędkość ładowania wszystkich zasobów, których żąda strona, wraz z podziałem na składowe tych czasów. Umożliwia także szybkie wychwycenie zbyt dużych plików obrazków, skryptów i stylów, a także emulację różnych prędkości internetu (np. 3G lub wolne LTE). Zakładka Performance wyświetla także wszystkie wskaźniki Web Vitals z informacją, czy ich wartości są w normie, czy zbyt wysokie. Dla zaawansowanych użytkowników dostępne są także funkcje takie jak “Coverage”, które pozwala odnaleźć nieużywany kod CSS i JavaScript.
Jeśli jedynym naszym zadaniem jest zarządzanie samą treścią z poziomu wordpressa, możemy wpłynąć na czas ładowania strony w następujący sposób:
Czyli optymalizacja wordpressa za pomocą wtyczki.
Jaka jest najlepsza wtyczka do optymalizacji Wordpress ?
Jedną z najpopularniejszych wtyczek używanych do tworzenia cache i szeroko pojętej optymalizacji Wordpressa jest W3 Total Cache. W3C przyspiesza stronę generując statyczne pliki zamiast zawartości tworzonej dynamicznie pobieranej z bazy danych co zdecydowanie skraca czas ładowania strony.
Ze względu na ilość funkcji, które oferuje, jej pierwsza konfiguracja może być problematyczna dla nowych użytkowników. Poniżej zostały opisane najważniejsze ustawienia, które warto skonfigurować:
Zakładka General pozwala szybko włączać i wyłączać moduły konfigurowane w innych zakładkach.
Zakładka Page Cache - tutaj możemy zmienić zaawansowane ustawienia i warunki dla cache strony:
Zakładka Browser Cache
Pozostałe opcje w innych zakładkach pozostawiamy tak, jak zostay ustawione domyślnie.
Po zmianie każdej opcji warto sprawdzić poprawne działanie strony w innej przeglądarce, gdzie nie jesteśmy zalogowani do wordpressa. Można też odczekać chwilę i sprawdzić wpływ zmienionych ustawień na prędkość działania strony i wyniki Google PageSpeed czy GTMetrix.
Jeśli tworzymy własny szablon Wordpress od początku (a zwykle to rozwiązanie jest przez nas wdrażane), warto pamiętać o kilku dobrych praktykach, które pozwolą na zmniejszenie czasu ładowania strony.
Pamiętajmy, że skrypty JS powinny być ładowane w stopce strony, aby nie blokować ładowania jej treści. Skrypty w Wordpressie powinniśmy ładować korzystając z wbudowanej funkcji wp_enqueue_script( string $handle, string $src = '', string[] $deps = array(), string|bool|null $ver = false, bool $in_footer = false ), dla której w ostatnim argumencie powinniśmy sprecyzować, że skrypt ma zostać załadowany przed tagiem zamykającym </body>.
Tworząc rozbudowane strony dobrym pomysłem może być podział plików CSS i JS na moduły odpowiadające poszczególnym podstronom. W połączeniu z szablonami stron możemy wtedy skorzystać z instrukcji warunkowych, przykładowo ładując zasoby odpowiedzialne za podstronę kontaktu tylko na niej:
wp_enqueue_style(‘common’);
wp_enqueue_script(‘common’);
if( is_page_template(‘contact.php’) ){
wp_enqueue_style(‘contact’);
wp_enqueue_script(‘contact’;
}
Tę samą zasadę można użyć do wyłączenia niepotrzebnego ładowania styli i skryptów dostarczanych przez wtyczki. Przykładowo jeśli wiemy, że jedyna strona, na której będzie osadzony formularz kontaktowy contact-form-7, to szablon “Kontakt”, możemy zrezygnować z ładowania zasobów tej wtyczki na innych podstronach:
if( ! is_page_template(‘contact.php’) ){
wp_dequeue_style(‘contact-form-7’);
wp_dequeue_script(‘contact-form-7’);
}
Pamiętajmy jednak, by po takich zabiegach dokładnie przetestować stronę, gdyż zdarza się, że wybiórcze usunięcie zasobów danej wtyczki może powodować błędy JavaScript.
Wydzielenie styli odpowiadających za sekcje widoczne od razu po wejściu na stronę i załadowanie ich od razu, inline, używając tagu <style> w sekcji <head> może poprawić wskaźniki FCP / LCP opisane w pierwszej części artykułu. Po załadowaniu tych kluczowych elementów, reszta stylów może zostać doładowana później, przy pomocy lazy-load. Takie podejście wymaga jednak dobrego rozplanowania struktury CSS już na początku jego tworzenia, aby samo wyodrębnienie tych stylów było możliwie bezproblemowe.
Podobnie jak przy arkuszach CSS, ładowanie lazy-load może przynieść znaczące oszczędności, jeśli chodzi o czas pierwszego wczytania strony. W przypadku użycia tej metody, obrazki będą doładowywane w miarę przewijania strony przez użytkownika, nie zabierając czasu i zasobów zaraz po otwarciu witryny. Pamiętajmy jednak, by nie używać go w przypadku bannerów umieszczonych w górnej części witryny, gdyż każde opóźnienie ich ładowania pogorszy czasy FCP / LCP.
W przypadku ładowania obrazków dodanych przez administratora w treściach wpisów w Wordpressie, możemy skorzystać z poniższego skryptu, który automatycznie ustawi atrybuty pod plugin lazy-load:
// Lazy Load
function prepare_lazyload_src($attr) {
$attr['data-src'] = $attr['src'];
$attr['src'] = '';
$attr['class'] .= ' lazyload';
return $attr;
}
add_filter( 'wp_get_attachment_image_attributes', 'prepare_lazyload_src');
Jeśli wiemy, że główni odbiorcy naszej strony będą ją odwiedzać np. z Polski, warto przy wybieraniu serwera kierować się również jego fizyczną lokalizacją. Sama odległość pomiędzy komputerem, z którego wysyłane są zapytania, a serwerem je obsługującym nie ma dużego wpływu na prędkość przesyłu danych, jednak duża liczba przeskoków (ang. hop) przez które muszą przejść pakiety może powodować opóźnienia odczuwalne przez użytkownika.
W przypadku, gdy nie mamy możliwości wybrania serwera z dogodną lokalizacją bądź chcemy, by strona działała szybko bez względu na miejsce, z którego jest ładowana, możemy rozważyć użycie tzw. CDN (Content delivery network). Systemy takie składają się z rozbudowanej sieci serwerów rozsianych po całym świecie, w których przechowywane są kopie statycznych plików ładowanych przez naszą stronę. Podczas wykonania zapytania do serwera, system CDN odsyła żądane zasoby z punktu znajdującego się najbliżej użytkownika, co znacząco zmniejsza opóźnienia.
Zobacz co to jest hosting Wordpress i jak dobrać hosting do swoich potrzeb.
Do tej pory, w protokole HTTP 1.1, każdy żądany zasób ładowany był przy pomocy osobnego zapytania do serwera. Powodowało to, że znaczna część czasu potrzebnego na ładowanie strony, była wykorzystywana właśnie na obsługę tych zapytań, a same pliki nie mogły być pobierane jednocześnie.
Takie podejście zmieniło się wraz z wprowadzeniem standardu HTTP/2, w którym to przeglądarka nawiązuje z serwerem tylko jedno połączenie - jest ono utrzymywane aż do momentu zamknięcia strony, a zasoby ładowane są jednocześnie, zwykle przy pomocy jednego zapytania.
źródło: https://blog.cloudflare.com/http-2-for-web-developers/
Jeśli nasz dostawca na to pozwala, zdecydowanie powinniśmy włączyć obsługę protokołu HTTP/2 na serwerze. W takim wypadku powinniśmy także zrezygnować z wtyczek łączących arkusze CSS i skrypty JS w zbiorcze pliki, ponieważ taka operacja nie tylko nie przyniesie już żadnych korzyści, a może wręcz zaszkodzić - w przypadku drobnej zmiany np. w arkuszu CSS, przeglądarka pobierze sobie jedynie nową wersję zmienionego pliku, a pozostałe zaczyta z cache. Gdyby pliki były połączone, musielibyśmy od nowa ładować wszystkie style wymagane przez stronę.
Bez względu na protokół używany na naszym serwerze, warto zaimplementować w nim odpowiednią obsługę cache w przeglądarce. Spowoduje to, że podczas ponownych wizyt na stronie przeglądarka nie będzie musiała pobierać zasobów z serwera, a zaczyta je z własnego lokalnego cache. Przykładowo, dla serwera Apache, można dodać w pliku .htaccess następujące dyrektywy:
<IfModule mod_expires.c>
ExpiresActive On
# Images
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
# Video
ExpiresByType video/webm "access plus 1 year"
ExpiresByType video/mp4 "access plus 1 year"
ExpiresByType video/mpeg "access plus 1 year"
# Fonts
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
# CSS, JavaScript
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# Others
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
</IfModule>
W razie, gdyby zaszła potrzeba wymuszenia aktualizacji jakiegoś pliku, zawsze można skorzystać z dodatkowego parametru określającego jego wersję.
Przykładowe użycie takich parametrów dla ładowania skryptu, stylu i obrazka może wyglądać jak poniżej:
wp_enqueue_script('main', get_template_directory_uri() . '/js/app.js', array('jquery'), filemtime( get_template_directory() . '/js/app.js' ), true);
// automatyczne uaktualnianie wersji na podstawie daty modyfikacji pliku
wp_enqueue_style('main', get_template_directory_uri() . '/css/main.css', array(), filemtime( get_template_directory() . '/css/main.css' ), 'all');
// automatyczne uaktualnianie wersji na podstawie daty modyfikacji pliku
<img src=”<?php echo get_template_directory_uri();?>/assets/img/logo.png?v=2.0”>
Jest wiele metod poprawy prędkości ładowania i działania stron wordpress i każdą z nich powinniśmy dopasować do naszego konkretnego przypadku, typu strony i konfiguracji serwera. Jednak szybkość działania jest jednym z ważniejszych kryteriów odbioru strony zarówno przez użytkownika jak i algorytmy pozycjonujące. Pamiętajmy, aby regularnie testować kondycję naszej strony oraz przeprowadzać prace związane z optymalizacją bazy danych wordpress.
Jeżeli zależy nam na tym by użytkownik sprawnie otworzył naszą stronę i poruszał się po niej warto zadbać o wybór takich rozwiązań, które nie będą zbyt obciążały serweru i przeglądarki. Zobacz jak stworzyć stronę samodzielnie na Wordpress.
Zamiast wybrać template z opcją multipurpose czyli dający możliwość konfiguracji wielu układów i layoutów strony głównej i podstron, wybierzmy prostszy motyw, który nie daje takiego wyboru, a przez co nie jest wyposażony w zbyt dużą ilość kodu JS i CSS.
Często bywa trudna lub nie jest możliwa do wykonania w takim stopniu jak dedykowanego wdrożenia wykonanego pod konkretne założenia projektowe i funkcjonalne. Zwykle rozwiązania gotowe oparte są o buildery jak Divi, Elementor. Dają one ogromne możliwości jednak kosztem jakości kodu który musi być przygotowany na wszystkie możliwości stąd często jest go po prostu za dużo, a wykorzystywany rzeczywisty jego zasób to 30-40%.
Optymalizacja prędkości i liczba zapytań do bazy danych oraz kod przeładowany różnego typu shortcodami ładującymi odpowiednie elementy do sekcji jest nieraz tak duży że technicznie nie ma możliwości optymalizacji tego rozwiązania.
Często wtyczki zastosowane w gotowym szablonie Wordpress nie posiadają aktywnych licencji, co uniemożliwia ich aktualizowanie. Brak aktualizacji często prowadzi po czasie do włamania na stronę lub jej zawirusowania.
Sposób wdrożenia funkcji i działania może być mniej intuicyjny lub uciążliwy do prowadzenia aktywnie strony.
Zobacz również jak pozycjonować stronę na wordpress
Czyli w jaki sposób wykonać i optymalizować zdjęcia w Wordpress ? Jak Wordpress obsługuje mechanizmy obsługi zdjęć oraz jak przygotować zdjęcia do Wordpressa.
WordPress wyposażony został w jeden zbiór / katalog / do zarządzania plikami i grafikami, który dostępny jest z bocznego menu pod nazwą 'media'. To tutaj przechowywane są wszystkie pliki multimedialne jak obrazy, filmy, mp3, pdf. Bibiloteka pozwala na zarządzanie, edytowanie lub usuwanie plików z całego wordpressa.
Dzięki niej można też edytować opisy alt i tytuł zdjęcia, a przycisk 'Edytuj obrazek' pozwala na wykonanie podstawowe prostych przekształceń jak kadrowanie, obrót, odbicie czy skalowanie oryginalnego obrazka. Tego typu edycję zdjęć można przeprowadzić z poziomu dodanego zdjęcia do postu klikając na niego prawym klawiszem myszy i wybierając z menu podręcznego opcję edycji.
WordPress automatycznie dokonuje konwersji wgranych zdjęć na poszczególne zdefiniowane rozmiary. Dlatego też w przypadku wgrania dużych zdjęć nie ma potrzeby ich dodatkowego formatowania na mniejsze rozmiary (jeżeli nie chcemy dedykowanych grafik pod rozdzielczości np: 480px)
Wordpress posiada kilka podstawowych formatów generowania zdjęć z zdjęcia bazowego. Rozmiary te generowane są podczas automatycznego przetwarzania zdjęć i zależne od ustawień biblioteki mediów. Wariant zdjęcia, który zostanie użyty we wpisie zależy od opcji wybranej podczas dodawania zdjęcia do wpisu, który można oczywiście zmienić podczas edycji zdjęcia. Zobacz jak wygląda optymalizacja zdjęć w wordpress i jak poprawnie przygotować zdjęcia
Formaty zdjęć w wordpress - miniatura, średni, duży
Rozmiary każdej wersji zdjęcia można dostosować w zakładce „Ustawienia multimediów”. Bardziej zaawansowanie użytkownicy mogą też wykonać własne wielkości tworząc nowe oznaczenia za pomocą funkcji add_image_size();
Formaty zdjęć jpg i png
Odpowiedni format zdjęcia na stronie internetowej ma znaczenie. Dostępne i popularne formaty to jpg i png. Każdy z nich jednak ma swoje zastosowanie i podlega optymalizacji.
Format PNG
Stosowany w grafikach jako nie zawierający tła. Idealny do prezentowania zawartości gdzie ciężko jest ustalić jednolite tło.
Format JPEG
Podstawowy format dla zdjęć i grafik klasycznych, które można dodatkowo poddać kompresji zmniejszając wagę
Jeżeli nie wiesz czy daną grafikę osadzić w formacie png i czy jpg zdecyduj się na ten format który docelowo ma mniejszą wagę.
Format Webp
Opracowany przez Google format mający za zadanie jeszcze bardziej zredukować wagę zdjęcia przy zachowaniu maksymalnej jakości. W wersji 5.8 Wordpress wspiera również właśnie format WebP.
W przypadku wgrywania zdjęć do biblioteki wordpressa powyżej wagi 1-2mb warto wcześniej je zmniejszyć do np. szerokości 1920px gdyż automatycznie zostanie ono przeformatowene do zadanych wymiarów Wordpressa. Wgrane zdjęcie zajmie tylko miejsce na serwerze.
Przy dodawaniu zdjęć o dużej wadze ale w już docelowym rozmiarze do wpisu lub np. na baner warto rozważyć wcześniejszą ich kompresję programami zewnętrznymi jak np: compressor.io dający świetne rezultaty w przypadku kompresji formatów jpg ale też png.
Czyli dynamiczne doczytywanie zdjęć podczas przewijania strony.
Funkcjonalność Lazy-load dla zdjęć powoduje ich dynamiczne doczytanie. Cały proces ma na celu przyśpieszyć wczytanie strony bez potrzeby ładowania wszystkich grafik w obrębie całej strony poniżej pierwszego przewinięcia. Jest to znacznie optymalizujące zasoby potrzebne do pokazania strony użytkownikowi oraz dające lepsze parametry stronie w narzędziach analitycznych.