Chcesz przyspieszyć swoją witrynę WordPress? Chcesz poznać sztuczki optymalizacyjne WordPress, które pomogą Ci skrócić czas wczytywania Twojej witryny? W tym artykule pokażemy, jak przyspieszyć WordPress, dzieląc się tym, jak zoptymalizowaliśmy naszą witrynę List25, aby zwiększyć wydajność.
Prawdopodobnie słyszałeś, że szybkość WordPressa jest importowana dla SEO. Szybsza witryna ma większe zaangażowanie użytkowników, więcej odsłon i lepszą sprzedaż. W studium przypadku strangeloop odkryli, że jednosekundowe opóźnienie może kosztować 7% sprzedaży, 11% mniej odsłon i 16% spadek zadowolenia klientów.
Jak więc przyspieszyć działanie WordPressa?
Cóż, zamiast po prostu dzielić się listą wskazówek dotyczących szybkości, postanowiliśmy przeprowadzić pełne studium przypadku, aby pokazać wyniki z naszej witryny List25 wraz z tym, jak to wszystko osiągnęliśmy.
Przegląd
List25 to blog rozrywkowy założony przez naszego założyciela Syeda Balkhi. Witryna ma ponad 1,5 miliona subskrybentów, a kanał YouTube ma ponad ćwierć miliarda zobaczów.
Treść witryny to głównie obrazki i filmy, które zajmują terabajty przepustowości, więc ogólna optymalizacja prędkości była dla nas kluczowa, aby utrzymać koszty na niskim poziomie, zmniejszyć liczbę porzuceń strony i poprawić czas spędzany na witrynie.
Zanim rozpoczęliśmy optymalizację, nasza strona główna wczytywała się w 2,21 sekundy według Pingdom. Po zakończeniu prac czas wczytywania strony spadł do 1,21 sekundy (~45% szybciej).
Podczas tej optymalizacji byliśmy w stanie przyspieszyć czas odpowiedzi naszego serwera, poprawić wynik wydajności szybkości strony, zmniejszyć liczbę całkowitych żądań i poprawić ogólny czas wczytywania.
Przyjrzyjmy się technikom optymalizacji, które pomogły nam przyspieszyć naszą witrynę WordPress.
Hosting WordPress
Dobry hosting ma kluczowe znaczenie dla szybkości działania twojej witryny internetowej. Gdy nasza witryna stała się bardziej popularna, po prostu przerosła naszą poprzednią firmę hostingową (HostGator).
Ich serwery po prostu nie były w stanie obsłużyć witryny o takim rozmiarze, ponieważ List25 otrzymuje dziesiątki milionów odsłon. HostGator jest świetny dla mniejszych witryn, ale nie dla tak dużych.
Przyjrzeliśmy się różnym zarządzanym opcjom hostingu WordPress i ostatecznie zdecydowaliśmy się skorzystać z SiteGround do hostingu List25, ponieważ oferowali najlepszą ogólną wartość dla tej witryny.
Natychmiast widać poprawę czasu odpowiedzi naszego serwera. Zeszliśmy z maksymalnego czasu odpowiedzi 442 ms do 172 ms. To poprawa o 256%.
Siteground stworzył narzędzia zwiększające wydajność dla konkretnych platform, takich jak WordPress, Joomla i Magento. W oparciu o platformę twojej witryny, specjalnie optymalizują twoje serwery, co skutkuje lepszą ogólną wydajnością.
Napisaliśmy artykuł o tym, kiedy powinieneś zmienić swój hosting, który mówi o 7 kluczowych wskaźnikach.
Jeśli chcesz zmienić hosta, zdecydowanie wypróbuj SiteGround. Użytkownicy WPBeginner otrzymują ekskluzywną 60% zniżkę na hosting + darmową domenę.
Pamięć podręczna Wtyczka
Jeśli chodzi o przyspieszenie WordPressa, pamięć podręczna jest drugim najważniejszym czynnikiem po twoim hostingu.
Zwykle, gdy odwiedzający wchodzi na twoją witrynę WordPress, twój serwer przekazuje żądanie PHP do bazy danych MySQL, która znajduje żądaną stronę, generuje ją w locie i pokazuje odwiedzającemu. Zajmuje to dużo zasobów. Pamięć podręczna oszczędza czas i zasoby.
Poniższy diagram przedstawia ten proces. W kategoriach laika, myśl o pamięci podręcznej jako o tworzeniu skrótu na pulpicie, który pomaga szybciej dotrzeć do pliku.
W przypadku witryny List25 używamy SiteGround SuperCacher, wtyczki stworzonej specjalnie dla własnych klientów. Ponadto dodali zaawansowane opcje dynamicznej pamięci podręcznej za pomocą Varnish (część ich wzmacniacza wydajności).
Jeśli nie korzystasz z Siteground, nie martw się. Możesz skonfigurować pamięć podręczna na twojej witrynie WordPress za pomocą jednego z wielu dostępnych rozwiązań, takich jak W3 Total Cache lub WP Super Cache.
W WPBeginner używamy W3 Total Cache, który zapewnia szereg opcji pamięci podręcznej strony, buforowania bazy danych i buforowania obiektów.
Ponieważ coraz więcej firm hostingowych specjalizuje się w WordPressie, zobaczymy więcej własnych rozwiązań pamięci podręcznej. Strony Pagely i WPEngine również oferują własny wbudowany system pamięci podręcznej.
CDN
Sieci dostarczania treści (CDN) mogą pomóc zwiększyć szybkość twojej witryny internetowej. Korzystamy z MaxCDN od początku istnienia List25, więc ta część nie uległa zmianie.
Napisaliśmy pełny artykuł na temat tego, czym jest CD N i dlaczego go potrzebujesz, wraz z infografiką.
CDN pozwala nam serwować wszystkie CSS, Javascript i obrazki z sieci dostarczania treści. Działa to poprzez określenie lokalizacji odwiedzającego witrynę i serwowanie treści z serwera znajdującego się najbliżej odwiedzającego.
Jeśli nie jesteś na rynku rozwiązania CDN premium, możesz skorzystać z Cloudflare.
Łączenie plików w celu zmniejszenia liczby żądań HTTP
Gdy dodajesz więcej wtyczek, często dodają one własne pliki JavaScript i CSS. Każdy dodatkowy plik to nowe żądanie HTTP.
Połączyliśmy te pliki JavaScript i CSS w jeden plik dla każdego z nich, aby zmniejszyć liczbę żądań i przyspieszyć czas wczytywania. Więcej szczegółów na ten temat można znaleźć na stronie Jak wtyczki WordPress mają wpływ na czas wczytywania.
Podczas gdy teraz wczytujemy kilka małych funkcji, których możemy nie potrzebować w konkretnej sekcji witryny, kod ten jest przechowywany w pamięci podręcznej w CDN, a wyniki pokazują, że mniej żądań plików zapewnia lepszą wydajność niż wczytywanie kilku mniejszych plików JS.
Jest to coś, co trzeba robić regularnie, ponieważ używane wtyczki zmieniają się w czasie.
Sprite’y obrazków
Wykorzystaliśmy sprite obrazu, który połączył kilka ikonek społecznościowych i witryn w jeden obraz:
Ilekroć potrzebowaliśmy wyświetlić konkretną ikonkę, używaliśmy CSS do:
- wczytywania obrazka jako obrazu tła
- Zdefiniować szerokość i wysokość elementu, dla którego potrzebujemy ikonki
- Ustawić pozycję tła dla naszego obrazka, aby wczytywać potrzebną ikonkę
Na przykład, aby wczytywać ikonki mediów społecznościowych panelu bocznego, używamy:
li.widget_social_icons ul li { float: left; width: 36px; height: 36px; margin: 0 10px 10px 0; padding: 0; background: url(../images/sprite.png) no-repeat; } li.widget_social_icons ul li.twitter { background-position: 0 -50px; } li.widget_social_icons ul li.facebook { background-position: -36px -50px; } li.widget_social_icons ul li.pinterest { background-position: -72px -50px; } li.widget_social_icons ul li.google { background-position: -108px -50px; } li.widget_social_icons ul li.rss { background-position: -144px -50px; } li.widget_social_icons ul li.youtube { background-position: -180px -50px; }
.
Właściwości CSS background-position
, width
i height
pomagają nam określić konkretną sekcję obrazka, którą chcemy wyświetlić:
W rezultacie tylko pierwsze żądanie dla tego pliku obrazka wykorzystuje przepustowość. Kolejne żądania do CDN dla obrazu spowodują wczytywanie wersji podręcznej (zazwyczaj lokalnej), a także konieczność zażądania tylko jednego obrazka zamiast 6 różnych ikonek społecznościowych.
Łącząc JavaScript, CSS i obrazki razem, znacznie zmniejszyliśmy liczbę żądań.
Minifikacja kodu
Minifikacja kodu bierze udział w usuwaniu białych znaków i przerw między wierszami w celu zmniejszenia rozmiaru pliku, dzięki czemu jest on szybciej wczytywany na żądanie.
W przypadku List25 używamy SCSS, arkusza stylów opartego na składni(Intro to Sass). Pozwala nam to uporządkować nasze pliki CSS w kilku obszarach rozwoju w łatwym do odczytania układzie:
Używamy CodeKit, aby następnie skompilować pliki SCSS do jednego pliku CSS. CodeKit usuwa również białe znaki i podziały wierszy, aby zapewnić jak najmniejszy rozmiar pliku:
W rezultacie udało nam się zmniejszyć rozmiar pliku CSS o 28%.
Optymalizacja obrazków
Zoptymalizowaliśmy nasze obrazki w dwóch obszarach: w naszym motywie WordPress i w przesłanej treści.
W przypadku naszego motywu WordPress użyliśmy CodeKit, aby zapewnić bezstratną kompresję wszystkich obrazków. Zapewnia to, że rozmiary plików są tak małe, jak to możliwe, bez utraty jakości.
Poinformowaliśmy również wszystkich naszych autorów o tym, jak ważne jest zapisywanie obrazków zoptymalizowanych pod kątem sieci. Zobacz nasz przewodnik na temat zapisywania obrazków zoptymalizowanych pod kątem stron internetowych.
Udostępnianie społecznościowe bez Javascript
Udostępnianie społecznościowe dla List25 jest naprawdę ważne, tak jak w przypadku każdej innej witryny internetowej. Jednak wtyczki do udostępniania społecznościowego mogą znacznie spowolnić twoją witrynę.
Podczas gdy integracja skryptów tych czterech sieci społecznościowych nie wpłynęła na czas wczytywania strony w naszych testach, wyraźnie spowolniła witrynę, gdy zobaczyliśmy ją na urządzeniu mobilnym. Przyciski udostępniania społecznościowego pojawiały się po kilku sekundach, mimo że skrypty wczytywały się asynchronicznie, co powodowało przesuwanie się treści wpisów, gdy przyciski wczytywały się, by je zobaczyć.
Aby rozwiązać ten problem, przeszliśmy na rozwiązanie (prawie) wolne od Javascript. Każdy z przycisków udostępniania sieci społecznościowej jest renderowany przez naszą własną wtyczkę WordPress, a Javascript motywu jest używany tylko do otwierania okna przeglądarki internetowej, gdy użytkownik kliknie przycisk.
Nadal jednak chcieliśmy wyświetlać całkowitą liczbę udostępnień wpisu we wszystkich mediach społecznościowych. Aby to zrobić, stworzyliśmy małą własną wtyczkę WordPress, która pobiera i zapisuje w pamięci podręcznej liczbę udostępnień z każdej sieci społecznościowej w tabeli meta wpisu. Liczby te są aktualizowane co 24 godziny, dzięki czemu czasochłonne zapytania nie są stale uruchamiane.
Możesz użyć interfejsu API, takiego jak Sharre, lub przeanalizować pływający pasek społecznościowy w celu dostosowania go do własnych potrzeb.
Korzystając z RUM (Real User Monitoring) firmy Pingdom, ta nowa wtyczka do udostępniania skróciła „prawdziwy” czas wczytywania strony z 6 sekund do nieco ponad 2 sekund. Zapewniło to również zmniejszenie liczby żądań skryptów stron trzecich.
Wynik
Znacząco poprawiliśmy szybkość naszej witryny. Czas wczytywania spadł z 2,2 sekundy do 1,22 sekundy.
Udało nam się znacznie skrócić czas odpowiedzi serwera.
Pomogło to skrócić czas poświęcany na pobieranie strony przez bota Google, co zwiększyło nasz współczynnik indeksowania.
Nasz ogólny współczynnik odrzuceń spadł o 7%, ponieważ witryna wczytywała się szybciej, a dzięki zmianie hosta byliśmy w stanie zmniejszyć liczbę błędów serwera.
Jak można sobie wyobrazić przy niższym współczynniku odrzuceń, czas spędzony na witrynie również wzrósł o ponad 30 sekund.
Wnioski
Jak widać, szybsze wczytywanie witryny może zwiększyć zaangażowanie odwiedzających. Omówione przez nas techniki obejmowały szereg podstawowych i pośrednich ulepszeń, które można wdrożyć w celu optymalizacji twojej witryny WordPress.
Mamy nadzieję, że ten artykuł pomógł ci przyspieszyć twoją witrynę WordPress. Możesz również zapoznać się z naszym artykułem na temat 20 niezbędnych wtyczek WordPress na 2015 rok.
Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube, aby zobaczyć poradniki dotyczące filmów WordPress. Możesz nas również znaleźć na Twitterze i Facebooku.
Peter
I love Performance Guides so much Thanks for Sharing with us. In Germany there not so many Wordpress Blogs. But we have Great Guides too.
But don’t forget HTTP/2 this will change a lot. I mean combine fiels no longer good for optimize and priority are comes in the game
Gabe Livan
To further reduce the number of HTTP requests I recommend „WP Asset Clean Up” plugin as it removes all unnecessary styles and scripts that are not needed on the home page and other posts/pages.
Patrick Evans
I’m using Rosehosting to host my WordPress websites and I’m very pleased with the speed and reliability of my VPS.
From your tutorials, I learned how to make use of image sprites and how to save images optimized for web and my websites are faster now.
Thanks!
Miro
Switched to site ground recently and I am really happy with them. I also followed steps in this article and got quite good results except one thing. I failed in Combining Files to Reduce HTTP Requests. Plugins that are out there to do so don’t work well, moreover, they either break my site or make it extremely slow. Do you have an article / a tutorial on how to manually Combine Files to Reduce HTTP Requests? Would you suggest anyone who provides such a service (combining js and css files to reduce http requests). Thank you
Jane
Thanks for the article guys.
We deffo needed something to optimize our speed due to large number of high res images
We use Wp Cache on our free photo site, but we also noticed that even though this helps, we still need to compress (resize) images cause it takes a lot of time to laod 20 images (on home page).
So, basically, resize everything and keep high resolution images in the background (for downloads)
Have a great weekend
Jane
Piet
For the images you use a sprite you say, but the images you’re using can easily be replaced with a font icon such as FontAwesome. Depending how you install that (I would use Bower), it’s not even an outgoing http request, so you could save yourself the loading of that image file (and all the calculating to make it right of course).
Jay Castillo
Wow! Your numbers for List25 with Siteground are awesome! Did you use the GoGeek plan or is there a bigger plan not listed on their website?
One more thing, what tool did you use to get server response times (the graph just above Google bot crawl rate)?
Editorial Staff
We are using their Dedicated server plan with the WordPress Booster package. We used Pingdom for the server response time graph.
Administrator
Jay Castillo
Got it, thanks!
Alberto Serrano
Hello , I hosted my site on site ground but didn’t knew they had a cache plugin already installed so I installed WP supercache , should I disable one and which one would be better ?
Thanks
Editorial Staff
Yup you probably don’t need SuperCache. I would confirm with SiteGround support just to make sure though
Administrator
Lawrence
Thanks for this very helpful guide!
Please, did you setup Maxcdn together with Siteground’s SuperCacher?
I recently moved to siteground and will love to know how to setup Maxcdn, given that the supercacher plugin is already active on my account
WPBeginner Support
Hi Lawrence,
When you cache content on your website, it is still served by the same server. MaxCDN, on the other hand serves your content using their content delivery network which improves your website’s performance. As for compatibility concerns, you may want to contact your hosting provider.
Ian Douglas
Please consider letting loose your custom social sharing plugin into the wild (i.e., free to download for the public). Social sharing has always been a drain on pages, so it would be great to get a sleek and fast option.