Zrychlujeme web: pluginy pro WordPress

29. března 2022

Dnes se podíváme na to, jak zrychlit WordPress pomocí mých oblíbených pluginů. A aby to nebylo jen takové suchopárné, tak se jim podíváme přímo pod pokličku. Místo nudného konstatování plugin rovnou nainstalujeme a otestujeme. Přečtěte si praktický návod, jak zrychlit vaše webové stránky na WordPressu, bod po bodu.

Nainstaloval jsem prázdný WordPress 5.9.2, doinstaloval jsem plugin Really Simple SSL

Vytvořil jsem si testovací stránku https://vyboh.trialhosting.cz/wordpress/2022/03/28/testovaci-stranka/
se dvěma obrázky a pěti odstavci textu vygenerovaného pomocí https://cs.lipsum.com/feed/html a zakázal jsem komentáře.

Pustíme standardní nástroj z Apache – https://httpd.apache.org/docs/2.4/programs/ab.html

Nastavíme deset současných spojení a celkem 1000 požadavků na stránku:

# ab -c 10 -n 1000 https://vyboh.trialhosting.cz/wordpress/2022/03/28/testovaci-stranka/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking vyboh.trialhosting.cz (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Apache/2.4.38
Server Hostname: vyboh.trialhosting.cz
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: X25519 253 bits
TLS Server Name: vyboh.trialhosting.cz

Document Path: /wordpress/2022/03/28/testovaci-stranka/
Document Length: 61566 bytes

Concurrency Level: 10
Time taken for tests: 124.431 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 62061000 bytes
HTML transferred: 61566000 bytes
Requests per second: 8.04 [#/sec] (mean)
Time per request: 1244.311 [ms] (mean)
Time per request: 124.431 [ms] (mean, across all concurrent requests)
Transfer rate: 487.07 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 2 3 0.9 2 13
Processing: 292 1237 101.1 1221 2155
Waiting: 282 1233 101.0 1218 2153
Total: 296 1239 101.0 1224 2157
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 1224
66% 1248
75% 1269
80% 1284
90% 1340
95% 1413
98% 1472
99% 1496
100% 2157 (longest request)

Řekněme si na rovinu, že výsledek je velmi neuspokojivý.

Přidáme můj oblíbený plugin W3 Total Cache

Po instalaci a aktivaci pluginu přejdeme do menu General Settings
Performance -> General Settings
Přeskočíme Wizard, ktreý se pokouší nám nastavit všechno sám a uděláme si to manuálně.

Začneme u položky Database Cache
Zaškrtneme Enable a Database Cache Method: nastavíme na Memcached a Save Settings & Pure Caches

Znovu spustíme ab:

# ab -c 10 -n 1000 https://vyboh.trialhosting.cz/wordpress/2022/03/28/testovaci-stranka/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking vyboh.trialhosting.cz (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Apache/2.4.38
Server Hostname: vyboh.trialhosting.cz
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: X25519 253 bits
TLS Server Name: vyboh.trialhosting.cz

Document Path: /wordpress/2022/03/28/testovaci-stranka/
Document Length: 61752 bytes

Concurrency Level: 10
Time taken for tests: 47.238 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 62292000 bytes
HTML transferred: 61752000 bytes
Requests per second: 21.17 [#/sec] (mean)
Time per request: 472.381 [ms] (mean)
Time per request: 47.238 [ms] (mean, across all concurrent requests)
Transfer rate: 1287.77 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 2 3 0.9 2 11
Processing: 115 467 49.9 458 798
Waiting: 114 463 49.9 453 798
Total: 124 470 49.9 460 809
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 460
66% 469
75% 477
80% 484
90% 529
95% 564
98% 596
99% 646
100% 809 (longest request)

Hned na první pohled je vidět, že test proběhl místo za 124.431s za 47.238s, tedy zhruba za 40% času.

To už je lepší.

Tak a teď zapneme Page Cache, takže WordPress vygeneruje stránku pouze jednou a dál už ji servíruje z Cache. Zvolíme tu nejrychlejší metodu vůbec – Memcached

# ab -c 10 -n 1000 https://vyboh.trialhosting.cz/wordpress/2022/03/28/testovaci-stranka/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking vyboh.trialhosting.cz (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Apache/2.4.38
Server Hostname: vyboh.trialhosting.cz
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: X25519 253 bits
TLS Server Name: vyboh.trialhosting.cz

Document Path: /wordpress/2022/03/28/testovaci-stranka/
Document Length: 61851 bytes

Concurrency Level: 10
Time taken for tests: 3.066 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 62479000 bytes
HTML transferred: 61851000 bytes
Requests per second: 326.19 [#/sec] (mean)
Time per request: 30.657 [ms] (mean)
Time per request: 3.066 [ms] (mean, across all concurrent requests)
Transfer rate: 19902.34 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 3 9 2.9 9 25
Processing: 6 20 7.5 19 193
Waiting: 6 16 7.2 15 191
Total: 11 29 7.9 28 196

Percentage of the requests served within a certain time (ms)
50% 28
66% 30
75% 31
80% 33
90% 36
95% 39
98% 44
99% 48
100% 196 (longest request)

 

Čísla pěkná, dostali jsme se na cca 2,5% času proti vypnuté cache, ale na rovinu, musel by být v cache celý obsah webu, aby to fungovalo takhle.
Každopádně pro demonstraci to stačí.

 

Spíš se ale pojďme podívat co nám opravdu zpomaluje stránku.
Pokud si pustíme test na https://www.webpagetest.org/
a dostaneme celkem jednoznačný výsledek:
https://www.webpagetest.org/result/220328_AiDc1B_BSS/1/details/#waterfall_view_step1

Je vidět, že nejvíc nás stojí vyhledání v DNS, navázání spojení a vyjednání šifrovaného spojení. K tématu jsem před časem napsal článek, takže se tím nebudeme dále zabývat.

Takže pojďme dál. Máme tam JavaScript a CSS, bez kterých se obsah nezačne zobrazovat. To pomůže vyřešit například plugin se šíleným názvem: HTTP/2 Push, Async JavaScript, Defer Render Blocking CSS, HTTP2 server push, HTTP3 push

Po instalaci je ve výchozím nastavení Push Preload jak pro všechny styly tak i pro všechny JavaScripty.

Spustíme znovu test.
https://www.webpagetest.org/result/220328_AiDcVW_CSR/1/details/#waterfall_view_step1

Hned to vypadá lépe. Už nám nic neblokuje načítání.

Dalších pár milisekund můžeme dosáhnout změnou komprese z gzip na brotli a výměnou jpeg za webp, ale o tom už jsem také psal.

WordPress hosting na CZECHIA.com

Pokud ještě nemáte vlastní web a hledáte možnosti hostingu pro WordPress, navštivte stránky poskytovatele profesionálních webhostingových služeb CZECHIA.com.

Webhostingová varianta WordPress od Czechie nabízí okamžité zřízení webhostingu na serveru s operačním systémem Linux, podporou nejnovější verze PHP a automaticky předinstalovaným redakčním systémem WordPress. Během pár okamžiků tak můžete začít vytvářet svůj osobní blog, precizní prezentaci celé vlastní firmy, nebo například informační portál o jediném produktu či jejich skupině.

 

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *