• Google corazbardziej będzie promować strony
przyjazne urządzeniom mobilnym
Źródło: http://www.engadget.com/2015/02/27/google-page-rank-mobile/
• Google eksperymentuje z oznaczaniem wolno
działających stron WWW w wynikach wyszukiwania
Źródło: http://www.webperformancetoday.com/2015/02/25/google-new-slow-label-web-
performance/
4.
• Google corazbardziej będzie promować strony
przyjazne urządzeniom mobilnym
Źródło: http://www.engadget.com/2015/02/27/google-page-rank-mobile/
• Google eksperymentuje z oznaczaniem wolno
działających stron WWW w wynikach wyszukiwania
Źródło: http://www.webperformancetoday.com/2015/02/25/google-new-slow-label-web-
performance/
5.
Nikt nie lubiczekać
Źródła: http://www.getelastic.com/how-page-load-speed-affects-conversion-infographic/
http://www.shoutmeloud.com/improve-website-loading-speed-seo-usability.html
• Liczba pobrań Firefoksa wzrosła o 15.4% po
zmniejszeniu średniego czasu ładowania strony o
2.2 sekundy
• Walmart odnotował wzrost konwersji o 2% na każdą
1 sekundę krótszego czasu ładowania strony
• 47% konsumentów oczekuje załadowania się
strony 2 sekundy lub szybciej
6.
Nikt nie lubiczekać
Źródła: http://www.getelastic.com/how-page-load-speed-affects-conversion-infographic/
http://www.shoutmeloud.com/improve-website-loading-speed-seo-usability.html
• Liczba pobrań Firefoksa wzrosła o 15.4% po
zmniejszeniu średniego czasu ładowania strony o
2.2 sekundy
• Walmart odnotował wzrost konwersji o 2% na każdą
1 sekundę krótszego czasu ładowania strony
• 47% konsumentów oczekuje załadowania się
strony 2 sekundy lub szybciej
7.
Nikt nie lubiczekać
Źródła: http://www.getelastic.com/how-page-load-speed-affects-conversion-infographic/
http://www.shoutmeloud.com/improve-website-loading-speed-seo-usability.html
• Liczba pobrań Firefoksa wzrosła o 15.4% po
zmniejszeniu średniego czasu ładowania strony o
2.2 sekundy
• Walmart odnotował wzrost konwersji o 2% na każdą
1 sekundę krótszego czasu ładowania strony
• 47% konsumentów oczekuje załadowania się
strony w 2 sekundy lub szybciej
1 2
2) Ilośćzapytań do serwera
1) Szybkość WordPressa
16.
1 2
3
2) Ilośćzapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
17.
1 2
3
4) Szybkośćodpowiedzi serwera
4
2) Ilość zapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
18.
1 2
3
5
4) Szybkośćodpowiedzi serwera
4
2) Ilość zapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
5) Sposób renderowania strony
19.
1 2
3
5
4) Szybkośćodpowiedzi serwera
4
2) Ilość zapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
5) Sposób renderowania strony
6
6) Wydajność strony po załadowaniu
• Opcja dlaleniwych: dokupienie wiaderka RAM-u i
słoika procesorów ;-)
• Przegląd wtyczek: usunięcie nieużywanych
• Przegląd wtyczek: zastąpienie złożonych wtyczek
prostszymi adekwatnie do wykorzystywanych
możliwości
• Zainstalowanie wtyczki od cache
Opis WP Super Cache: http://wpzen.pl/przyspieszanie-strony-za-pomoca-wtyczki-wp-super-cache/
Opis W3 Total Cache: http://wpzen.pl/wp-content/uploads/2013/09/w3-total-cache-wordcamp-
wroclaw-2013.pdf
• W skrajnych wypadkach: profilowanie kodu
Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
23.
• Opcja dlaleniwych: dokupienie wiaderka RAM-u i
słoika procesorów ;-)
• Przegląd wtyczek: usunięcie nieużywanych
• Przegląd wtyczek: zastąpienie złożonych wtyczek
prostszymi adekwatnie do wykorzystywanych
możliwości
• Zainstalowanie wtyczki od cache
Opis WP Super Cache: http://wpzen.pl/przyspieszanie-strony-za-pomoca-wtyczki-wp-super-cache/
Opis W3 Total Cache: http://wpzen.pl/wp-content/uploads/2013/09/w3-total-cache-wordcamp-
wroclaw-2013.pdf
• W skrajnych wypadkach: profilowanie kodu
Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
24.
• Opcja dlaleniwych: dokupienie wiaderka RAM-u i
słoika procesorów ;-)
• Przegląd wtyczek: usunięcie nieużywanych
• Przegląd wtyczek: zastąpienie złożonych wtyczek
prostszymi adekwatnie do wykorzystywanych
możliwości
• Zainstalowanie wtyczki od cache
Opis WP Super Cache: http://wpzen.pl/przyspieszanie-strony-za-pomoca-wtyczki-wp-super-cache/
Opis W3 Total Cache: http://wpzen.pl/wp-content/uploads/2013/09/w3-total-cache-wordcamp-
wroclaw-2013.pdf
• W skrajnych wypadkach: profilowanie kodu
Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
25.
• Opcja dlaleniwych: dokupienie wiaderka RAM-u i
słoika procesorów ;-)
• Przegląd wtyczek: usunięcie nieużywanych
• Przegląd wtyczek: zastąpienie złożonych wtyczek
prostszymi adekwatnie do wykorzystywanych
możliwości
• Zainstalowanie wtyczki od cache
Opis WP Super Cache: http://wpzen.pl/przyspieszanie-strony-za-pomoca-wtyczki-wp-super-cache/
Opis W3 Total Cache: http://wpzen.pl/wp-content/uploads/2013/09/w3-total-cache-wordcamp-
wroclaw-2013.pdf
• W skrajnych wypadkach: profilowanie kodu
Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
26.
• Opcja dlaleniwych: dokupienie wiaderka RAM-u i
słoika procesorów ;-)
• Przegląd wtyczek: usunięcie nieużywanych
• Przegląd wtyczek: zastąpienie złożonych wtyczek
prostszymi adekwatnie do wykorzystywanych
możliwości
• Zainstalowanie wtyczki od cache
Opis WP Super Cache: http://wpzen.pl/przyspieszanie-strony-za-pomoca-wtyczki-wp-super-cache/
Opis W3 Total Cache: http://wpzen.pl/wp-content/uploads/2013/09/w3-total-cache-wordcamp-
wroclaw-2013.pdf
• W skrajnych wypadkach: profilowanie kodu
Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
Dobór odpowiedniego formatu
•JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
31.
Dobór odpowiedniego formatu
•JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
32.
Dobór odpowiedniego formatu
•JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
33.
Dobór odpowiedniego formatu
•JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
35.
Odpowiednie wymiary
• Wartosprawdzić czy wymiary grafik są adekwatne
do obszaru który zajmują
• W wypadku formatów takich jak PNG, JPG czy GIF
wymiary znacząco wpływają na rozmiar pliku
CSS Sprites
• Umieszczamyobrazki w jednym pliku i modyfikując
background-position wyświetlamy odpowiedni fragment
dużej grafiki
• Redukują ilość zapytań do serwera
• Można zrobić to samo z SVG: https://css-tricks.com/svg-
sprites-use-better-icon-fonts/
41.
CSS Sprites
• Umieszczamyobrazki w jednym pliku i modyfikując
background-position wyświetlamy odpowiedni fragment
dużej grafiki
• Redukują ilość zapytań do serwera
• Można zrobić to samo z SVG: https://css-tricks.com/svg-
sprites-use-better-icon-fonts/
42.
CSS Sprites
• Umieszczamyobrazki w jednym pliku i modyfikując
background-position wyświetlamy odpowiedni fragment
dużej grafiki
• Redukują ilość zapytań do serwera
• Można zrobić to samo z SVG: https://css-tricks.com/svg-
sprites-use-better-icon-fonts/
Rozmiar HTML/CSS/JS
• Minifikacja- wtyczka Better WordPress Minify i WP
HTML Compression
https://wordpress.org/plugins/bwp-minify/
https://wordpress.org/plugins/wp-html-compression/
• Unikanie zbyt wielu wtyczek (większość ma swoje
pliki CSS i JavaScript)
46.
Rozmiar HTML/CSS/JS
• Minifikacja- wtyczka Better WordPress Minify i WP
HTML Compression
https://wordpress.org/plugins/bwp-minify/
https://wordpress.org/plugins/wp-html-compression/
• Unikanie zbyt wielu wtyczek (większość ma swoje
pliki CSS i JavaScript)
47.
Rozmiar fontów
• Optymalizacjapoprzez wspierane zestawy znaków
(parametr subset)
https://fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext
• Optymalizacja poprzez ograniczenie się do
wybranych znaków (parametr text)
https://fonts.googleapis.com/css?
family=Lobster&text=JAVASCRIPT
48.
Rozmiar fontów
• Optymalizacjapoprzez wspierane zestawy znaków
(parametr subset)
https://fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext
• Optymalizacja poprzez ograniczenie się do
wybranych znaków (parametr text)
https://fonts.googleapis.com/css?family=Lobster&text=JAVASCRIPT
Cache przeglądarki# Patchedon: %2013-%05-%02 %07:%May:%51
# Auto-patched by jbetolo
<FilesMatch ".(gif|jpg|jpeg|png|swf|pdf|css|js|html|ico?|xml|txt)$">
FileETag none
</FilesMatch>
<IfModule mod_expires.c>
ExpiresActive on
# Perhaps better to whitelist expires rules? Perhaps.
ExpiresDefault "access plus 1 month"
# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Your document html
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
# RSS feed
ExpiresByType application/rss+xml "access plus 1 hour"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# HTC files (css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Webfonts
ExpiresByType font/truetype "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
</IfModule>
52.
CDN?
• Opłaca sięgdy mamy odwiedziny z różnych
rejonów świata
• Należy pamiętać, że kod na serwerze CDN może w
wyniku ataku zostać podmieniony - dlatego lepiej
korzystać z rozwiązań dużych graczy
• Popularne usługi CDN: Amazon Cloudfront,
MaxCDN, Cloudflare
53.
CDN?
• Opłaca sięgdy mamy odwiedziny z różnych
rejonów świata
• Należy pamiętać, że kod na serwerze CDN może w
wyniku ataku zostać podmieniony - dlatego lepiej
korzystać z rozwiązań dużych graczy
• Popularne usługi CDN: Amazon Cloudfront,
MaxCDN, Cloudflare
54.
CDN?
• Opłaca sięgdy mamy odwiedziny z różnych
rejonów świata
• Należy pamiętać, że kod na serwerze CDN może w
wyniku ataku zostać podmieniony - dlatego lepiej
korzystać z rozwiązań dużych graczy
• Popularne usługi CDN: Amazon Cloudfront,
MaxCDN, Cloudflare
55.
HSTS
• Zmniejsza ilośćzapytań DNS
https://www.chromium.org/hsts
• Wymaga pełnego wsparcia SSL na stronie
• Nasza domena może działać tylko po HTTPS po
dodaniu domeny na: https://hstspreload.appspot.com/
• Zwiększa bezpieczeństwo chroniąc np. przed
atakami typu MiTM
http://sekurak.pl/hsts-czyli-http-strict-transport-security/
56.
HSTS
• Zmniejsza ilośćzapytań DNS
https://www.chromium.org/hsts
• Wymaga pełnego wsparcia SSL na stronie
• Nasza domena może działać tylko po HTTPS po
dodaniu domeny na: https://hstspreload.appspot.com/
• Zwiększa bezpieczeństwo chroniąc np. przed
atakami typu MiTM
http://sekurak.pl/hsts-czyli-http-strict-transport-security/
57.
HSTS
• Zmniejsza ilośćzapytań DNS
https://www.chromium.org/hsts
• Wymaga pełnego wsparcia SSL na stronie
• Nasza domena może działać tylko po HTTPS po
dodaniu domeny na: https://hstspreload.appspot.com/
• Zwiększa bezpieczeństwo chroniąc np. przed
atakami typu MiTM
http://sekurak.pl/hsts-czyli-http-strict-transport-security/
58.
HSTS
• Zmniejsza ilośćzapytań DNS
https://www.chromium.org/hsts
• Wymaga pełnego wsparcia SSL na stronie
• Nasza domena może działać tylko po HTTPS po
dodaniu domeny na: https://hstspreload.appspot.com/
• Zwiększa bezpieczeństwo chroniąc np. przed
atakami typu MiTM
http://sekurak.pl/hsts-czyli-http-strict-transport-security/
59.
HSTS
• Zmniejsza ilośćzapytań DNS
https://www.chromium.org/hsts
• Wymaga pełnego wsparcia SSL na stronie
• Nasza domena może działać tylko po HTTPS po
dodaniu domeny na: https://hstspreload.appspot.com/
• Zwiększa bezpieczeństwo chroniąc np. przed
atakami typu MiTM
http://sekurak.pl/hsts-czyli-http-strict-transport-security/
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Sposób renderowania strony
•Skrypty powinny być ładowane zawsze na końcu
• Natychmiastowe wyświetlanie fragmentu strony
widocznego na ekranie - unikamy FOUC
• Do kompresji kodu CSS w sekcji <head> można
użyć np. http://refresh-sf.com/
62.
Sposób renderowania strony
•Skrypty powinny być ładowane zawsze na końcu
• Natychmiastowe wyświetlanie fragmentu strony
widocznego na ekranie - unikamy FOUC
• Do kompresji kodu CSS w sekcji <head> można
użyć np. http://refresh-sf.com/
63.
Sposób renderowania strony
•Skrypty powinny być ładowane zawsze na końcu
• Natychmiastowe wyświetlanie fragmentu strony
widocznego na ekranie - unikamy FOUC
• Do kompresji kodu CSS w sekcji <head> można
użyć np. http://refresh-sf.com/
64.
<script>
var cb =function() {
var l0 = '<link rel="stylesheet" href=“style1.css”>’;
var l1 = '<link rel="stylesheet" href=“style2.css">';
var l2 = '<link rel="stylesheet" href=“style3.css">';
var h = document.getElementsByTagName('head')[0];
h.innerHTML += l0 + l1 + l2;
};
var raf = requestAnimationFrame || mozRequestAnimationFrame ||
webkitRequestAnimationFrame || msRequestAnimationFrame;
if (raf) raf(cb);
else window.addEventListener('load', cb);
</script>
Wydajność JS iCSS
• Na starszych urządzeniach samo parsowanie jQuery
może zająć kilkaset milisekund
http://timkadlec.com/2014/09/js-parse-and-execution-time/
• Zoptymalizowane selektory CSS też mogą pomóc
http://benfrain.com/css-performance-revisited-selectors-bloat-expensive-styles/
• Warto rozważyć usunięcie nieużywanego kodu JS i CSS
69.
Wydajność JS iCSS
• Na starszych urządzeniach samo parsowanie jQuery
może zająć kilkaset milisekund
http://timkadlec.com/2014/09/js-parse-and-execution-time/
• Zoptymalizowane selektory CSS też mogą pomóc
http://benfrain.com/css-performance-revisited-selectors-bloat-expensive-styles/
Warto rozważyć usunięcie nieużywanego kodu JS i CSS
70.
Wydajność JS iCSS
• Na starszych urządzeniach samo parsowanie jQuery
może zająć kilkaset milisekund
http://timkadlec.com/2014/09/js-parse-and-execution-time/
• Zoptymalizowane selektory CSS też mogą pomóc
http://benfrain.com/css-performance-revisited-selectors-bloat-expensive-styles/
• Warto rozważyć usunięcie nieużywanego kodu JS i CSS
71.
Wydajność JS iCSS
• Wydajność właściwości CSS: http://csstriggers.com/
• FLIP dla animacji: http://aerotwist.com/blog/flip-your-
animations/
72.
Wydajność JS iCSS
• Wydajność właściwości CSS: http://csstriggers.com/
• FLIP dla animacji: http://aerotwist.com/blog/flip-your-
animations/