SlideShare a Scribd company logo
1 of 35
Download to read offline
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Cache!
To chceš!
Vláďa Smitka
vladimir.smitka@lynt.cz
@smitka
Lynt services s.r.o.
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 2
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 3
Co je cache?
Výkon – nemusím znova dělat náročné operace
Aktuálnost – musím řešit neplatná data (invalidace)
+
-
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 4
Cachování
OP code cache
Transientní cache
Stránková cache
Cache prohlížeče
Objektová cache
Disková cache
Proxy cache
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Cache prohlížeče
<IfModule mod_expires.c>
<FilesMatch ".(?i:gif|jpe?g|png|js|css|ico|woff|svg)$">
ExpiresActive on
ExpiresDefault "access plus 365 days"
</Filesmatch>
</IfModule>
12. 10. 2019 5
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Co, když nemám Expires hlavičky?
• Heuristika prohlížeče
• (teď – datum poslední modifikace)/10
• https://tools.ietf.org/html/rfc7234#section-4.2.2
12. 10. 2019 6
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Proxy cache
• Na vstupu do vaší sítě
(už se moc nepoužívá kvůli HTTPS)
• Na cestě – např. CloudFlare
• Před serverem – Varnish, Nginx
12. 10. 2019 7
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
CloudFlare
• Pomůže mi?
12. 10. 2019 8
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Debug problémů se zdroji
• https://www.webpagetest.org
• https://gtmetrix.com/
• https://redbot.org/
12. 10. 2019 9
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Plně stránková cache
• Cachovací plugin
–WP SuperCache
–… W3, Comet, Fastest…
–WP Rocket
12. 10. 2019 10
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Jak fungují cachovací pluginy?
• Princip – uložit vypočítanou PHP stránku jako
statické HTML na disk (output buffer)
• Přístup:
– Test z .htaccess, zda soubor cache existuje
– Malý PHP skript (větší kontrola, pomalejší)
• Zlepšováky
12. 10. 2019 11
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
WP Rocket
12. 10. 2019 12
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
WP SuperCache
12. 10. 2019 13
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Pod pokličkou WP SuperCache
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/wpc/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f
RewriteRule ^(.*) "/wpc/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L]
cache
└── supercache
├── index.html
└── testweb.xy
├── index-https.html
└── wordcamp-bratislava
└── index-https.html
12. 10. 2019 14
https://testweb.xy/wordcamp-bratislava/
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Bez cache
12. 10. 2019 15
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
WP SuperCache - PHP
12. 10. 2019 16
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
WP SuperCache - server
12. 10. 2019 17
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Nginx Microcache
12. 10. 2019 18
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Kdy se necachuje?
• https://2019.bratislava.wordcamp.org/?a=1
• https://2019.bratislava.wordcamp.org/?fbclid=ABCD1234
• https://2019.bratislava.wordcamp.org/?gclid=ABCD1234
• https://2019.bratislava.wordcamp.org/?utm_medium=email
12. 10. 2019 19
Fix: interní přesměrování pro nemodifikující parametry
https://gist.github.com/lynt-smitka/297004bed3aa4fb3065af16fd6e7ff18
WP Rocket má výjimky pro běžné nemodifikující parametry
Parametry často dělají problém při přesměrování, tester:
https://www.ppc-robot.net/cs/autotagging-tester/
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Kdy je špatné cachovat?
• Dynamické stránky
– Přihlášení uživatelé (většinou)
– Web s košíkem
– Web s uživatelem nastavitelnými parametry (filtry)
• Formuláře
– Je zde nonce (platnost 12-24 hodin)
– Bezpečná doba cachování 10 hodin
12. 10. 2019 20
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
„Na e-shopech cachovací pluginy moc nefungují“
12. 10. 2019 21
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Objektová cache
• WP z dat v databázi skládá objekty, se kterými
dále pracuje – náročná operace, mnoho
dotazů do DB
• Některé lze uložit lokálně
127.0.0.1:6379> keys *:1929
1) "wp_:post_tag_relationships:1929"
2) "wp_:category_relationships:1929"
3) "wp_:posts:1929"
4) "wp_:post_format_relationships:1929"
5) "wp_:post_meta:1929"
12. 10. 2019 22
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Objektová cache
• Server musí podporovat uložiště
• WordPress má podporu, je ji potřeba aktivovat
podle použitého úložiště
• Drop-in do WP (Memcache, Redis, Xcache, APCu)
• Není to běžné na sdílených hostinzích
• Výpočetně náročná serializace
• Ne všechny pluginy a šablony s ní počítají –
složitější invalidace
12. 10. 2019 23
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Serializace
12. 10. 2019 24
a:13:{s:7:"vajicka";i:4;s:15:"krupicovy cukor";s:4:"125g";s:15:"vanilkovy
cukor";i:1;s:5:"maslo";s:4:"125g";s:6:"mlieko";s:4:"50ml";s:14:"muka
polohruba";s:5:"150g";s:5:"kakao";s:3:"50g";s:16:"prasok do
peciva";i:1;s:10:"mascarpone";s:4:"250g";s:18:"slahackova smotana";s:4:"250g";s:12:"jemny
tvaroh";s:4:"250g";s:8:"cokolada";s:3:"50g";s:5:"banan";i:3;}
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Redukce DB dotazů
12. 10. 2019 25
Může být kontraproduktivní,
pokud web dělá několik stovek dotazů do DB – náročná serializace!
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Transientní cache
• WP v základu může ukládat výsledky mnoha
složitých operací do databáze
• _site_transient_* a _transient_* ve wp-
options
• Pokud je k dispozici objektová cache, může být
využita místo DB
• https://codex.wordpress.org/Transients_API
12. 10. 2019 26
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
OP cache
• Kompiluje PHP zdroják
• Vyšší verze PHP s ní umí lépe pracovat
• Spotřebovává více RAM
• Běžný WP kolem 20MB
• opcache.memory_consumption
• opcache.revalidate_freq
• https://github.com/rlerdorf/opcache-status (starý, ale dobrý)
• https://github.com/amnuts/opcache-gui
• https://github.com/PeeHaa/OpCacheGUI
12. 10. 2019 27
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 28
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Disková cache
12. 10. 2019 29
RAM není nikdy dost – Linux ji využije!
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Co dále cachovat?
• Cache lokalizací
– https://github.com/lynt-smitka/WP-nginx-
config/blob/master/extras/mu-plugins/
– lynt-mo-cache.php
– lynt-mo-cache-igb.php
• Cache widgetů a menu
12. 10. 2019 30
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 31
Bez OP cache
Zapnutá OP cache (standard, nezaplněná) – méně RAM, protože soubory jsou v OP cache
Cache lokalizací – PHP třídy – ještě méně RAM, protože i lokalizace jsou v OP cache
Cache lokalizací – igbinary – rychlejší, více RAM, protože se načítají binární soubory
Cache lokalizací igb + Object cache v OP cache – méně dotazů bez serializace
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Objektová cache II.
• Není to běžné na sdílených hostinzích
• Výpočetně náročná serializace
• https://github.com/elcobvg/wordpress-
opcache
12. 10. 2019 32
cache
├── wp-opcache-001750be6fac24fa5b1d57b91ffd44d7.php
├── wp-opcache-03e1fcb75c96dd27d0c18d7fbc528c2d.php
├── wp-opcache-073d1cde8e952fea0fc9ec449ecef86e.php
├── wp-opcache-089b61a0516793ff0c3f638785900d0a.php
│…
<?php return array(9999999999,(object) array(
'ID' => '1',
'post_author' => '1',
'post_date' => '2019-08-08 06:19:00',
'post_date_gmt' => '2019-08-08 06:19:00',
'post_content' => '...',
'post_title' => 'Hello world!',
…
'post_type' => 'post',
'post_mime_type' => '',
'comment_count' => '1',
));
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Jak ladit bez profileru?
• Query monitor
• https://wordpress.org/plugins/query-monitor/
12. 10. 2019 33
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19
Co si odnést?
• Expires hlavičky – vždy
• CloudFlare – pro větší návštěvnost nebo geo
• Cache lokalizací – dobrý přínos a minimum side efektů
• Prezentační weby/blogy – cachovací plugin (pozor na nonce)
• Pozor na parametry v URL!
• E-shopy – nutné řešit od základu, je třeba zrušit špatné
komponenty, Object Cache může někdy pomoci
• Je dobré zkontrolovat využívání OP Cache
• Při nákupu VPS/Dediku koupit rovnou více RAM
• Query Monitor pro ladění
12. 10. 2019 34
https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 35
A to je vše, přátelé.

More Related Content

What's hot

WordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPressWordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPressVladimír Smitka
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůVladimír Smitka
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyVladimír Smitka
 
WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3Vladimír Smitka
 
WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnostiVladimír Smitka
 
WordCamp Brno 2017 - rychlý a bezpečný web
WordCamp Brno 2017  - rychlý a bezpečný webWordCamp Brno 2017  - rychlý a bezpečný web
WordCamp Brno 2017 - rychlý a bezpečný webVladimír Smitka
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceVladimír Smitka
 
Základní pluginy pro WordPress
Základní pluginy pro WordPressZákladní pluginy pro WordPress
Základní pluginy pro WordPressRadek Kucera
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilováníVladimír Smitka
 
Wordpress_DOD
Wordpress_DODWordpress_DOD
Wordpress_DODDoubry99
 
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
WordPress šablony a  rychlost načítání (WordCamp Praha 2017)WordPress šablony a  rychlost načítání (WordCamp Praha 2017)
WordPress šablony a rychlost načítání (WordCamp Praha 2017)Martin Michálek
 
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Vladimír Smitka
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuMichal Špaček
 

What's hot (16)

Výkon WordPress
Výkon WordPressVýkon WordPress
Výkon WordPress
 
WordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPressWordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPress
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webů
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránky
 
WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3
 
WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnosti
 
WordCamp Brno 2017 - rychlý a bezpečný web
WordCamp Brno 2017  - rychlý a bezpečný webWordCamp Brno 2017  - rychlý a bezpečný web
WordCamp Brno 2017 - rychlý a bezpečný web
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konference
 
Základní pluginy pro WordPress
Základní pluginy pro WordPressZákladní pluginy pro WordPress
Základní pluginy pro WordPress
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 
Wordpress_DOD
Wordpress_DODWordpress_DOD
Wordpress_DOD
 
Instalace WordPress
Instalace WordPressInstalace WordPress
Instalace WordPress
 
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
WordPress šablony a  rychlost načítání (WordCamp Praha 2017)WordPress šablony a  rychlost načítání (WordCamp Praha 2017)
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
 
Wordfence 2016
Wordfence 2016Wordfence 2016
Wordfence 2016
 
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
 

Similar to WordCamp Bratislava 2019 - Cache!

Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?Vladimír Smitka
 
Webový front-end ve službách mobilního vývojáře
Webový front-end  ve službách mobilního  vývojáře Webový front-end  ve službách mobilního  vývojáře
Webový front-end ve službách mobilního vývojáře Martin Michálek
 
Cheat sheet python_vlaxa
Cheat sheet python_vlaxaCheat sheet python_vlaxa
Cheat sheet python_vlaxaVladan Laxa
 
Říjnový SEOloger 2019 - Screaming Frog a crawlování webů
Říjnový SEOloger 2019 - Screaming Frog a crawlování webůŘíjnový SEOloger 2019 - Screaming Frog a crawlování webů
Říjnový SEOloger 2019 - Screaming Frog a crawlování webůMartin Žatkovič
 
17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webůMartin Michálek
 
Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Martin Michálek
 

Similar to WordCamp Bratislava 2019 - Cache! (6)

Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?
 
Webový front-end ve službách mobilního vývojáře
Webový front-end  ve službách mobilního  vývojáře Webový front-end  ve službách mobilního  vývojáře
Webový front-end ve službách mobilního vývojáře
 
Cheat sheet python_vlaxa
Cheat sheet python_vlaxaCheat sheet python_vlaxa
Cheat sheet python_vlaxa
 
Říjnový SEOloger 2019 - Screaming Frog a crawlování webů
Říjnový SEOloger 2019 - Screaming Frog a crawlování webůŘíjnový SEOloger 2019 - Screaming Frog a crawlování webů
Říjnový SEOloger 2019 - Screaming Frog a crawlování webů
 
17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů17 technických tipů ke zrychlení webů
17 technických tipů ke zrychlení webů
 
Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)Web rychlý jako blesk (s důrazem na AMP)
Web rychlý jako blesk (s důrazem na AMP)
 

More from Vladimír Smitka

WordPress Security: Defend yourself against digital invaders
WordPress Security:Defend yourself against digital invadersWordPress Security:Defend yourself against digital invaders
WordPress Security: Defend yourself against digital invadersVladimír Smitka
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuningVladimír Smitka
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyoneVladimír Smitka
 
České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)Vladimír Smitka
 
Wordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentaceWordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentaceVladimír Smitka
 
Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014Vladimír Smitka
 

More from Vladimír Smitka (9)

Http/2 vs Image Sprites
Http/2 vs Image SpritesHttp/2 vs Image Sprites
Http/2 vs Image Sprites
 
Ansible
AnsibleAnsible
Ansible
 
WordPress Security: Defend yourself against digital invaders
WordPress Security:Defend yourself against digital invadersWordPress Security:Defend yourself against digital invaders
WordPress Security: Defend yourself against digital invaders
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuning
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyone
 
České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)
 
Wordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentaceWordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentace
 
Dijskrův algoritmus
Dijskrův algoritmusDijskrův algoritmus
Dijskrův algoritmus
 
Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014
 

WordCamp Bratislava 2019 - Cache!

  • 1. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Cache! To chceš! Vláďa Smitka vladimir.smitka@lynt.cz @smitka Lynt services s.r.o.
  • 2. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 2
  • 3. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 3 Co je cache? Výkon – nemusím znova dělat náročné operace Aktuálnost – musím řešit neplatná data (invalidace) + -
  • 4. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 4 Cachování OP code cache Transientní cache Stránková cache Cache prohlížeče Objektová cache Disková cache Proxy cache
  • 5. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Cache prohlížeče <IfModule mod_expires.c> <FilesMatch ".(?i:gif|jpe?g|png|js|css|ico|woff|svg)$"> ExpiresActive on ExpiresDefault "access plus 365 days" </Filesmatch> </IfModule> 12. 10. 2019 5
  • 6. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Co, když nemám Expires hlavičky? • Heuristika prohlížeče • (teď – datum poslední modifikace)/10 • https://tools.ietf.org/html/rfc7234#section-4.2.2 12. 10. 2019 6
  • 7. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Proxy cache • Na vstupu do vaší sítě (už se moc nepoužívá kvůli HTTPS) • Na cestě – např. CloudFlare • Před serverem – Varnish, Nginx 12. 10. 2019 7
  • 8. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 CloudFlare • Pomůže mi? 12. 10. 2019 8
  • 9. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Debug problémů se zdroji • https://www.webpagetest.org • https://gtmetrix.com/ • https://redbot.org/ 12. 10. 2019 9
  • 10. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Plně stránková cache • Cachovací plugin –WP SuperCache –… W3, Comet, Fastest… –WP Rocket 12. 10. 2019 10
  • 11. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Jak fungují cachovací pluginy? • Princip – uložit vypočítanou PHP stránku jako statické HTML na disk (output buffer) • Přístup: – Test z .htaccess, zda soubor cache existuje – Malý PHP skript (větší kontrola, pomalejší) • Zlepšováky 12. 10. 2019 11
  • 12. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 WP Rocket 12. 10. 2019 12
  • 13. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 WP SuperCache 12. 10. 2019 13
  • 14. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Pod pokličkou WP SuperCache RewriteCond %{REQUEST_METHOD} !POST RewriteCond %{QUERY_STRING} !.*=.* RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ RewriteCond %{HTTPS} on RewriteCond %{DOCUMENT_ROOT}/wpc/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f RewriteRule ^(.*) "/wpc/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L] cache └── supercache ├── index.html └── testweb.xy ├── index-https.html └── wordcamp-bratislava └── index-https.html 12. 10. 2019 14 https://testweb.xy/wordcamp-bratislava/
  • 15. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Bez cache 12. 10. 2019 15
  • 16. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 WP SuperCache - PHP 12. 10. 2019 16
  • 17. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 WP SuperCache - server 12. 10. 2019 17
  • 18. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Nginx Microcache 12. 10. 2019 18
  • 19. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Kdy se necachuje? • https://2019.bratislava.wordcamp.org/?a=1 • https://2019.bratislava.wordcamp.org/?fbclid=ABCD1234 • https://2019.bratislava.wordcamp.org/?gclid=ABCD1234 • https://2019.bratislava.wordcamp.org/?utm_medium=email 12. 10. 2019 19 Fix: interní přesměrování pro nemodifikující parametry https://gist.github.com/lynt-smitka/297004bed3aa4fb3065af16fd6e7ff18 WP Rocket má výjimky pro běžné nemodifikující parametry Parametry často dělají problém při přesměrování, tester: https://www.ppc-robot.net/cs/autotagging-tester/
  • 20. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Kdy je špatné cachovat? • Dynamické stránky – Přihlášení uživatelé (většinou) – Web s košíkem – Web s uživatelem nastavitelnými parametry (filtry) • Formuláře – Je zde nonce (platnost 12-24 hodin) – Bezpečná doba cachování 10 hodin 12. 10. 2019 20
  • 21. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 „Na e-shopech cachovací pluginy moc nefungují“ 12. 10. 2019 21
  • 22. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Objektová cache • WP z dat v databázi skládá objekty, se kterými dále pracuje – náročná operace, mnoho dotazů do DB • Některé lze uložit lokálně 127.0.0.1:6379> keys *:1929 1) "wp_:post_tag_relationships:1929" 2) "wp_:category_relationships:1929" 3) "wp_:posts:1929" 4) "wp_:post_format_relationships:1929" 5) "wp_:post_meta:1929" 12. 10. 2019 22
  • 23. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Objektová cache • Server musí podporovat uložiště • WordPress má podporu, je ji potřeba aktivovat podle použitého úložiště • Drop-in do WP (Memcache, Redis, Xcache, APCu) • Není to běžné na sdílených hostinzích • Výpočetně náročná serializace • Ne všechny pluginy a šablony s ní počítají – složitější invalidace 12. 10. 2019 23
  • 24. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Serializace 12. 10. 2019 24 a:13:{s:7:"vajicka";i:4;s:15:"krupicovy cukor";s:4:"125g";s:15:"vanilkovy cukor";i:1;s:5:"maslo";s:4:"125g";s:6:"mlieko";s:4:"50ml";s:14:"muka polohruba";s:5:"150g";s:5:"kakao";s:3:"50g";s:16:"prasok do peciva";i:1;s:10:"mascarpone";s:4:"250g";s:18:"slahackova smotana";s:4:"250g";s:12:"jemny tvaroh";s:4:"250g";s:8:"cokolada";s:3:"50g";s:5:"banan";i:3;}
  • 25. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Redukce DB dotazů 12. 10. 2019 25 Může být kontraproduktivní, pokud web dělá několik stovek dotazů do DB – náročná serializace!
  • 26. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Transientní cache • WP v základu může ukládat výsledky mnoha složitých operací do databáze • _site_transient_* a _transient_* ve wp- options • Pokud je k dispozici objektová cache, může být využita místo DB • https://codex.wordpress.org/Transients_API 12. 10. 2019 26
  • 27. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 OP cache • Kompiluje PHP zdroják • Vyšší verze PHP s ní umí lépe pracovat • Spotřebovává více RAM • Běžný WP kolem 20MB • opcache.memory_consumption • opcache.revalidate_freq • https://github.com/rlerdorf/opcache-status (starý, ale dobrý) • https://github.com/amnuts/opcache-gui • https://github.com/PeeHaa/OpCacheGUI 12. 10. 2019 27
  • 28. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 28
  • 29. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Disková cache 12. 10. 2019 29 RAM není nikdy dost – Linux ji využije!
  • 30. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Co dále cachovat? • Cache lokalizací – https://github.com/lynt-smitka/WP-nginx- config/blob/master/extras/mu-plugins/ – lynt-mo-cache.php – lynt-mo-cache-igb.php • Cache widgetů a menu 12. 10. 2019 30
  • 31. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 31 Bez OP cache Zapnutá OP cache (standard, nezaplněná) – méně RAM, protože soubory jsou v OP cache Cache lokalizací – PHP třídy – ještě méně RAM, protože i lokalizace jsou v OP cache Cache lokalizací – igbinary – rychlejší, více RAM, protože se načítají binární soubory Cache lokalizací igb + Object cache v OP cache – méně dotazů bez serializace
  • 32. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Objektová cache II. • Není to běžné na sdílených hostinzích • Výpočetně náročná serializace • https://github.com/elcobvg/wordpress- opcache 12. 10. 2019 32 cache ├── wp-opcache-001750be6fac24fa5b1d57b91ffd44d7.php ├── wp-opcache-03e1fcb75c96dd27d0c18d7fbc528c2d.php ├── wp-opcache-073d1cde8e952fea0fc9ec449ecef86e.php ├── wp-opcache-089b61a0516793ff0c3f638785900d0a.php │… <?php return array(9999999999,(object) array( 'ID' => '1', 'post_author' => '1', 'post_date' => '2019-08-08 06:19:00', 'post_date_gmt' => '2019-08-08 06:19:00', 'post_content' => '...', 'post_title' => 'Hello world!', … 'post_type' => 'post', 'post_mime_type' => '', 'comment_count' => '1', ));
  • 33. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Jak ladit bez profileru? • Query monitor • https://wordpress.org/plugins/query-monitor/ 12. 10. 2019 33
  • 34. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba19 Co si odnést? • Expires hlavičky – vždy • CloudFlare – pro větší návštěvnost nebo geo • Cache lokalizací – dobrý přínos a minimum side efektů • Prezentační weby/blogy – cachovací plugin (pozor na nonce) • Pozor na parametry v URL! • E-shopy – nutné řešit od základu, je třeba zrušit špatné komponenty, Object Cache může někdy pomoci • Je dobré zkontrolovat využívání OP Cache • Při nákupu VPS/Dediku koupit rovnou více RAM • Query Monitor pro ladění 12. 10. 2019 34
  • 35. https://lynt.cz @smitka Odkazy: https://u.lynt.cz/wcba1912. 10. 2019 35 A to je vše, přátelé.