SlideShare a Scribd company logo
1 of 97
Download to read offline
Czas (wczytywania) to
(czasem) pieniądz
Tomasz Dziuda
WordUp Łódź @ 22.IV.2015
Dlaczego?
Google coraz bardziej 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/
Google eksperymentuje
z oznaczaniem wolno
działających stron WWW



Źródło: http://
www.webperformancetoday.com/2015/02/25/
google-new-slow-label-web-performance/
Nikt nie lubi czekać
Ź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
Nikt nie lubi czekać
Ź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
Nikt nie lubi czekać
Ź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
Zanim zaczniemy
optymalizować
Pamiętajcie o…
Zasadzie Pareto
zwana inaczej zasadą 80/20
Więcej: http://pl.wikipedia.org/wiki/Zasada_Pareto
20% działań
optymalizacyjnych
najprawdopodobniej
przyniesie 80% efektów
Na pozostałe 20%
efektów trzeba będzie
poświęcić 80% czasu
Duże firmy mają oddzielne
zespoły odpowiedzialne za
optymalizację




https://developer.yahoo.com/performance/


https://developers.google.com/speed/
Pamiętajcie też o…
optymalizacji podstron
oraz pamiętajcie o…
sprawdzaniu czy Page
Speed nie zmienił algorytmu
Jak żyć mierzyć?
Powtórka ze statystyki
Powtórka ze statystyki
• więcej pomiarów === większa wiarygodność
• średnia arytmetyczna
• mediana i kwartyle

http://pl.wikipedia.org/wiki/Mediana
• wartość minimalna/maksymalna
• odchylenie standardowe

http://pl.wikipedia.org/wiki/Odchylenie_standardowe
Powtórka ze statystyki
• więcej pomiarów === większa wiarygodność
• średnia arytmetyczna
• mediana i kwartyle

http://pl.wikipedia.org/wiki/Mediana
• wartość minimalna/maksymalna
• odchylenie standardowe

http://pl.wikipedia.org/wiki/Odchylenie_standardowe
Powtórka ze statystyki
• więcej pomiarów === większa wiarygodność
• średnia arytmetyczna
• mediana i kwartyle

http://pl.wikipedia.org/wiki/Mediana
• wartość minimalna/maksymalna
• odchylenie standardowe

http://pl.wikipedia.org/wiki/Odchylenie_standardowe
Powtórka ze statystyki
• więcej pomiarów === większa wiarygodność
• średnia arytmetyczna
• mediana i kwartyle

http://pl.wikipedia.org/wiki/Mediana
• wartość minimalna/maksymalna
• odchylenie standardowe

http://pl.wikipedia.org/wiki/Odchylenie_standardowe
Powtórka ze statystyki
• więcej pomiarów === większa wiarygodność
• średnia arytmetyczna
• mediana i kwartyle

http://pl.wikipedia.org/wiki/Mediana
• wartość minimalna/maksymalna
• odchylenie standardowe

http://pl.wikipedia.org/wiki/Odchylenie_standardowe
Źródło: https://developers.google.com/speed/pagespeed/insights/
Why Trying to Get 95+ on Google Page Speed Insights for
Your WordPress Site Will Drive You Mad!
http://premium.wpmudev.org/blog/why-trying-to-get-95-on-google-pagespeed-insights-will-drive-you-mad/
Jak koneserzy tematów optymalizacji walczą o 100/100 

w Page Speed Insights
http://sourceforge.net/projects/schedule-analytics/
http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/
http://madskristensen.net/post/google-analytics-vs-google-page-speed
Źródło: http://tools.pingdom.com/
Źródło: http://www.webpagetest.org/
Chrome DevTools
Źródło: http://yslow.org/
Co wpływa na szybkość strony?
1
1) Szybkość WordPressa
1 2
2) Ilość zapytań do serwera
1) Szybkość WordPressa
1 2
3
2) Ilość zapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
1 2
3
4) Szybkość odpowiedzi serwera
4
2) Ilość zapytań do serwera
3) Rozmiar strony
1) Szybkość WordPressa
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
Wersja dla geeków ;-)
https://github.com/alex/what-happens-when
Szybkość WordPressa
• Opcja dla leniwych: 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
• Opcja dla leniwych: 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
• Opcja dla leniwych: 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

Cache Buddy: http://wptavern.com/mark-jaquith-releases-cache-buddy-a-plugin-to-enhance-popular-
wordpress-caching-solutions
• Profilowanie kodu i porządki w bazie danych



Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/

Porządkowanie bazy danych WP: http://wpzen.pl/porzadkowanie-i-optymalizacja-bazy-danych-
wordpressa/
• 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

Cache Buddy: http://wptavern.com/mark-jaquith-releases-cache-buddy-a-plugin-to-enhance-popular-
wordpress-caching-solutions
• Profilowanie kodu i porządki w bazie danych



Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/

Porządkowanie bazy danych WP: http://wpzen.pl/porzadkowanie-i-optymalizacja-bazy-danych-
wordpressa/
Ilość zapytań do serwera 

i rozmiar strony
Struktura typowej strony
Źródło: http://httparchive.org/interesting.php
http://www.wpspeedster.com/
http://wpzen.pl/wp-speedster-ranking-szybkosci-motywow-dla-wordpressa/
GZIP
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Źródło: http://code.garyjones.co.uk/htaccess-tweaks-improve-site-speed
Rozmiar grafik
Dobór odpowiedniego formatu
• JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
Dobór odpowiedniego formatu
• JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
Dobór odpowiedniego formatu
• JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
Dobór odpowiedniego formatu
• JPG - większość zdjęć
• PNG24 lub PNG8 - przezroczystość
• GIF - animacje
• SVG - niezależność od rozdzielczości
Odpowiednie wymiary
• Warto sprawdzić 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
Odpowiednie wymiary
• Warto sprawdzić 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
Optymalizacja grafik
Optymalizacja grafik
• tinypng.com

https://wordpress.org/plugins/tiny-compress-images/
• tinyjpg.com

ta sama wtyczka co wyżej ;)
• Wtyczka WP smush.it - stała się płatna :(

https://wordpress.org/plugins/wp-smushit/
• kompresja plików SVG - minifikacja kodu,
zmniejszenie dokładności krzywych
Optymalizacja grafik
• tinypng.com

https://wordpress.org/plugins/tiny-compress-images/
• tinyjpg.com

ta sama wtyczka co wyżej ;)
• Wtyczka WP smush.it - stała się płatna :(

https://wordpress.org/plugins/wp-smushit/
• kompresja plików SVG - minifikacja kodu,
zmniejszenie dokładności krzywych
Optymalizacja grafik
• tinypng.com

https://wordpress.org/plugins/tiny-compress-images/
• tinyjpg.com

ta sama wtyczka co wyżej ;)
• Wtyczka WP smush.it - stała się płatna :(

https://wordpress.org/plugins/wp-smushit/
• kompresja plików SVG - minifikacja kodu,
zmniejszenie dokładności krzywych
Optymalizacja grafik
• tinypng.com

https://wordpress.org/plugins/tiny-compress-images/
• tinyjpg.com

ta sama wtyczka co wyżej ;)
• Wtyczka WP smush.it - stała się płatna :(

https://wordpress.org/plugins/wp-smushit/
• kompresja plików SVG - minifikacja kodu,
zmniejszenie dokładności krzywych
CSS Sprites
• Umieszczamy obrazki 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/
CSS Sprites
• Umieszczamy obrazki 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/
CSS Sprites
• Umieszczamy obrazki 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/
Zorro SVG
Źródło: http://quasimondo.com/ZorroSVG/
• Pozwala uzyskać przezroczyste
grafiki zbliżone rozmiarem do
plików JPG
• Wymaga do działania wsparcia
dla SVG (IE9+, 93% pokrycia
rynku przeglądarek)
Zorro SVG
Źródło: http://quasimondo.com/ZorroSVG/
• Pozwala uzyskać przezroczyste
grafiki zbliżone rozmiarem do
plików JPG
• Wymaga do działania wsparcia
dla SVG (IE9+, 93% pokrycia
rynku przeglądarek)
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)
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)
Rozmiar fontów
• Optymalizacja poprzez 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
Rozmiar fontów
• Optymalizacja poprzez 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
Rozmiar fontów
• Optymalizacja poprzez 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
• Wykorzystanie localStorage do przechowywania
fontów



http://www.sitepoint.com/improving-font-performance-subsetting-local-storage/
Zewnętrzne usługi
• Social media

http://www.sitepoint.com/social-sharing-hidden-costs/

http://www.sitepoint.com/social-media-button-links/
• Gravatar

http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/

• Youtube, Vimeo etc.
Zewnętrzne usługi
• Social media

http://www.sitepoint.com/social-sharing-hidden-costs/

http://www.sitepoint.com/social-media-button-links/
• Gravatar

http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/

Youtube, Vimeo etc.
Zewnętrzne usługi
• Social media

http://www.sitepoint.com/social-sharing-hidden-costs/

http://www.sitepoint.com/social-media-button-links/
• Gravatar



http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/
• Youtube, Vimeo etc.

http://www.newmediacampaigns.com/blog/lazyytjs-a-jquery-plugin-to-lazy-load-youtube-videos
Szybkość odpowiedzi serwera
Cache przeglądarki
<FilesMatch ".(gif|jpg|jpeg|png|swf|pdf|css|js|html|ico?|xml|txt)$">
FileETag none
</FilesMatch>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType image/x-icon "access plus 1 week"
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"
ExpiresByType text/x-component "access plus 1 month"
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"
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>
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
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
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
HSTS
HSTS
HTTP GET /
HSTS
HTTP GET /
HTTP 301

Location: https://strona.pl/
HSTS
HTTP GET /
HTTP 301

Location: https://strona.pl/
HTTPS GET /
HSTS
• Zmniejsza ilość zapytań do serwera

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/
HSTS
• Zmniejsza ilość zapytań do serwera

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/
HSTS
• Zmniejsza ilość zapytań do serwera

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/
HSTS
• Zmniejsza ilość zapytań do serwera

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/
HSTS
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Dodajemy w .htaccess:

Sposób renderowania strony
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/
Sposób renderowania strony
• Skrypty powinny być ładowane zawsze na końcu
• Natychmiastowe wyświetlanie fragmentu strony
widocznego na ekranie - unikamy FOUC

https://adactio.com/journal/8504 - grunt-criticalcss
• Do kompresji kodu CSS w sekcji <head> można
użyć np. http://refresh-sf.com/
Sposób renderowania strony
• Skrypty powinny być ładowane zawsze na końcu
• Natychmiastowe wyświetlanie fragmentu strony
widocznego na ekranie - unikamy FOUC

https://adactio.com/journal/8504 - grunt-criticalcss
• Do kompresji kodu CSS w sekcji <head> można
użyć np. http://refresh-sf.com/
<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>
<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>
<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>
add_filter('style_loader_src', 'td_style_loader_src', 10, 2);
function td_style_loader_src($src, $handle) {
     if(!is_admin() && stripos($src, ‘XXXXXX’) === FALSE) {
          return false;
     } else {
          return $src;
     }
}
add_filter('script_loader_src', 'td_script_loader_src', 10, 2);
function td_script_loader_src($src, $handle) {
     if(!is_admin() && stripos($src, ‘XXXXXX’) === FALSE) {
          return false;
     } else {
          return $src;
     }
}
Można też sprawić, że wolno ładujące się
elementy wyglądają na ładujące się szybciej
http://blog.placeit.net/ux-tactics-make-slow-things-seem-faster/
Gdy inne metody zawiodą
Trzeba poczekać na szybsze protokoły
transmisji danych ;-)
http://techcrunch.com/2015/04/18/google-wants-to-speed-up-the-web-with-its-quic-protocol/
Gdy inne metody zawiodą
Pytania?
Tomasz Dziuda
Lead Developer @
@dziudek
http://dziudek.pl
dziudek@gavick.com

More Related Content

What's hot

Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaTomasz Dziuda
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤Tomasz Dziuda
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówTomasz Dziuda
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławStatycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławTomasz Dziuda
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4Tomasz Dziuda
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaTomasz Dziuda
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceTomasz Dziuda
 
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016Lukasz Wilczak
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Tomasz Dziuda
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2Tomasz Dziuda
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomTomasz Dziuda
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoTomasz Dziuda
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaTomasz Dziuda
 
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego blogaUnikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego blogaBartosz Romanowski
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...Lukasz Wilczak
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówArkadiusz Stęplowski
 
20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydaćWojciech Klocek
 

What's hot (20)

Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławStatycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET Wrocław
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
 
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
 
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego blogaUnikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
 
Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać
 

Viewers also liked

Solid Edge. Komputerowe wspomaganie projektowania
Solid Edge. Komputerowe wspomaganie projektowaniaSolid Edge. Komputerowe wspomaganie projektowania
Solid Edge. Komputerowe wspomaganie projektowaniaWydawnictwo Helion
 
52 Skuteczne Psychorady
52 Skuteczne Psychorady52 Skuteczne Psychorady
52 Skuteczne PsychoradyDarmowyEbook
 
Optimisation with Google Analytics
Optimisation with Google AnalyticsOptimisation with Google Analytics
Optimisation with Google AnalyticsLoves Data
 
Alternatywne źródła energii
Alternatywne źródła energiiAlternatywne źródła energii
Alternatywne źródła energiiagniwie
 

Viewers also liked (6)

WordCamp Praga 2015
WordCamp Praga 2015WordCamp Praga 2015
WordCamp Praga 2015
 
Solid Edge. Komputerowe wspomaganie projektowania
Solid Edge. Komputerowe wspomaganie projektowaniaSolid Edge. Komputerowe wspomaganie projektowania
Solid Edge. Komputerowe wspomaganie projektowania
 
52 Skuteczne Psychorady
52 Skuteczne Psychorady52 Skuteczne Psychorady
52 Skuteczne Psychorady
 
Optimisation with Google Analytics
Optimisation with Google AnalyticsOptimisation with Google Analytics
Optimisation with Google Analytics
 
Czym jest teoria naukowa?
Czym jest teoria naukowa?Czym jest teoria naukowa?
Czym jest teoria naukowa?
 
Alternatywne źródła energii
Alternatywne źródła energiiAlternatywne źródła energii
Alternatywne źródła energii
 

Similar to Word up łódź kwiecień 2015

Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytać
Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytaćWszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytać
Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytaćMaciej Swoboda
 
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...Grand Parade Poland
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziJakub Wiśniewski
 
Nowości w WooCommerce i plany rozwoju na 2016
Nowości w WooCommerce i plany rozwoju na 2016Nowości w WooCommerce i plany rozwoju na 2016
Nowości w WooCommerce i plany rozwoju na 2016Maciej Swoboda
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WP
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WPWordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WP
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WPMariusz Szatkowski
 
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećNajlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećMaciej Swoboda
 
Wtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używaćWtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używaćMaciej Swoboda
 
Zalety i wady WooCommerce
Zalety i wady WooCommerceZalety i wady WooCommerce
Zalety i wady WooCommerceMaciej Swoboda
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Tomasz Dziuda
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIWydawnictwo Helion
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Tomasz Dziuda
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławTomasz Dziuda
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuWydawnictwo Helion
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaTomasz Dziuda
 

Similar to Word up łódź kwiecień 2015 (20)

Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytać
Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytaćWszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytać
Wszystko, co chciałbyś wiedzieć 
o WooCommerce, ale bałeś się zapytać
 
WordPress dla początkujących
WordPress dla początkującychWordPress dla początkujących
WordPress dla początkujących
 
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...
Wielomilionowy Ruch na Wordpressie - Łukasz Wilczak & Piotr Federowicz (WordC...
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądzi
 
Nowości w WooCommerce i plany rozwoju na 2016
Nowości w WooCommerce i plany rozwoju na 2016Nowości w WooCommerce i plany rozwoju na 2016
Nowości w WooCommerce i plany rozwoju na 2016
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WP
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WPWordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WP
Wordpress dla początkujących szkolenie / warsztat 01/10 Wprowadzenie do WP
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Jaki hosting pod wordpressa
Jaki hosting pod wordpressaJaki hosting pod wordpressa
Jaki hosting pod wordpressa
 
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećNajlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
 
Wtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używaćWtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używać
 
Zalety i wady WooCommerce
Zalety i wady WooCommerceZalety i wady WooCommerce
Zalety i wady WooCommerce
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie II
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemu
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
 

More from Tomasz Dziuda

Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinTomasz Dziuda
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendiumTomasz Dziuda
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówTomasz Dziuda
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsTomasz Dziuda
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Tomasz Dziuda
 
WordUp Wrocław #3 2015
WordUp Wrocław #3 2015WordUp Wrocław #3 2015
WordUp Wrocław #3 2015Tomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Tomasz Dziuda
 
Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Tomasz Dziuda
 

More from Tomasz Dziuda (10)

Trello w praktyce
Trello w praktyceTrello w praktyce
Trello w praktyce
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendium
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
 
WordUp Wrocław #3 2015
WordUp Wrocław #3 2015WordUp Wrocław #3 2015
WordUp Wrocław #3 2015
 
Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?
 
JSztuczki
JSztuczkiJSztuczki
JSztuczki
 
Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015
 

Word up łódź kwiecień 2015

  • 1. Czas (wczytywania) to (czasem) pieniądz Tomasz Dziuda WordUp Łódź @ 22.IV.2015
  • 3. Google coraz bardziej 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/
  • 4. Google eksperymentuje z oznaczaniem wolno działających stron WWW
 
 Źródło: http:// www.webperformancetoday.com/2015/02/25/ google-new-slow-label-web-performance/
  • 5. Nikt nie lubi czekać Ź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 lubi czekać Ź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 lubi czekać Ź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
  • 9. Pamiętajcie o… Zasadzie Pareto zwana inaczej zasadą 80/20 Więcej: http://pl.wikipedia.org/wiki/Zasada_Pareto
  • 11. Na pozostałe 20% efektów trzeba będzie poświęcić 80% czasu
  • 12. Duże firmy mają oddzielne zespoły odpowiedzialne za optymalizację 
 
 https://developer.yahoo.com/performance/ 
 https://developers.google.com/speed/
  • 14. oraz pamiętajcie o… sprawdzaniu czy Page Speed nie zmienił algorytmu
  • 17. Powtórka ze statystyki • więcej pomiarów === większa wiarygodność • średnia arytmetyczna • mediana i kwartyle
 http://pl.wikipedia.org/wiki/Mediana • wartość minimalna/maksymalna • odchylenie standardowe
 http://pl.wikipedia.org/wiki/Odchylenie_standardowe
  • 18. Powtórka ze statystyki • więcej pomiarów === większa wiarygodność • średnia arytmetyczna • mediana i kwartyle
 http://pl.wikipedia.org/wiki/Mediana • wartość minimalna/maksymalna • odchylenie standardowe
 http://pl.wikipedia.org/wiki/Odchylenie_standardowe
  • 19. Powtórka ze statystyki • więcej pomiarów === większa wiarygodność • średnia arytmetyczna • mediana i kwartyle
 http://pl.wikipedia.org/wiki/Mediana • wartość minimalna/maksymalna • odchylenie standardowe
 http://pl.wikipedia.org/wiki/Odchylenie_standardowe
  • 20. Powtórka ze statystyki • więcej pomiarów === większa wiarygodność • średnia arytmetyczna • mediana i kwartyle
 http://pl.wikipedia.org/wiki/Mediana • wartość minimalna/maksymalna • odchylenie standardowe
 http://pl.wikipedia.org/wiki/Odchylenie_standardowe
  • 21. Powtórka ze statystyki • więcej pomiarów === większa wiarygodność • średnia arytmetyczna • mediana i kwartyle
 http://pl.wikipedia.org/wiki/Mediana • wartość minimalna/maksymalna • odchylenie standardowe
 http://pl.wikipedia.org/wiki/Odchylenie_standardowe
  • 23. Why Trying to Get 95+ on Google Page Speed Insights for Your WordPress Site Will Drive You Mad! http://premium.wpmudev.org/blog/why-trying-to-get-95-on-google-pagespeed-insights-will-drive-you-mad/ Jak koneserzy tematów optymalizacji walczą o 100/100 
 w Page Speed Insights http://sourceforge.net/projects/schedule-analytics/ http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/ http://madskristensen.net/post/google-analytics-vs-google-page-speed
  • 28. Co wpływa na szybkość strony?
  • 30. 1 2 2) Ilość zapytań do serwera 1) Szybkość WordPressa
  • 31. 1 2 3 2) Ilość zapytań do serwera 3) Rozmiar strony 1) Szybkość WordPressa
  • 32. 1 2 3 4) Szybkość odpowiedzi serwera 4 2) Ilość zapytań do serwera 3) Rozmiar strony 1) Szybkość WordPressa
  • 33. 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
  • 34. Wersja dla geeków ;-) https://github.com/alex/what-happens-when
  • 36. • Opcja dla leniwych: 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
  • 37. • Opcja dla leniwych: 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
  • 38. • Opcja dla leniwych: 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
  • 39. • 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
 Cache Buddy: http://wptavern.com/mark-jaquith-releases-cache-buddy-a-plugin-to-enhance-popular- wordpress-caching-solutions • Profilowanie kodu i porządki w bazie danych
 
 Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
 Porządkowanie bazy danych WP: http://wpzen.pl/porzadkowanie-i-optymalizacja-bazy-danych- wordpressa/
  • 40. • 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
 Cache Buddy: http://wptavern.com/mark-jaquith-releases-cache-buddy-a-plugin-to-enhance-popular- wordpress-caching-solutions • Profilowanie kodu i porządki w bazie danych
 
 Prezentacja o profilowaniu kodu: https://prezi.com/wlegamdbtc8g/nie-daj-sie-zwolnic/
 Porządkowanie bazy danych WP: http://wpzen.pl/porzadkowanie-i-optymalizacja-bazy-danych- wordpressa/
  • 41. Ilość zapytań do serwera 
 i rozmiar strony
  • 42. Struktura typowej strony Źródło: http://httparchive.org/interesting.php
  • 44. GZIP SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html Źródło: http://code.garyjones.co.uk/htaccess-tweaks-improve-site-speed
  • 46. Dobór odpowiedniego formatu • JPG - większość zdjęć • PNG24 lub PNG8 - przezroczystość • GIF - animacje • SVG - niezależność od rozdzielczości
  • 47. Dobór odpowiedniego formatu • JPG - większość zdjęć • PNG24 lub PNG8 - przezroczystość • GIF - animacje • SVG - niezależność od rozdzielczości
  • 48. Dobór odpowiedniego formatu • JPG - większość zdjęć • PNG24 lub PNG8 - przezroczystość • GIF - animacje • SVG - niezależność od rozdzielczości
  • 49. Dobór odpowiedniego formatu • JPG - większość zdjęć • PNG24 lub PNG8 - przezroczystość • GIF - animacje • SVG - niezależność od rozdzielczości
  • 50.
  • 51. Odpowiednie wymiary • Warto sprawdzić 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
  • 52. Odpowiednie wymiary • Warto sprawdzić 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
  • 54. Optymalizacja grafik • tinypng.com
 https://wordpress.org/plugins/tiny-compress-images/ • tinyjpg.com
 ta sama wtyczka co wyżej ;) • Wtyczka WP smush.it - stała się płatna :(
 https://wordpress.org/plugins/wp-smushit/ • kompresja plików SVG - minifikacja kodu, zmniejszenie dokładności krzywych
  • 55. Optymalizacja grafik • tinypng.com
 https://wordpress.org/plugins/tiny-compress-images/ • tinyjpg.com
 ta sama wtyczka co wyżej ;) • Wtyczka WP smush.it - stała się płatna :(
 https://wordpress.org/plugins/wp-smushit/ • kompresja plików SVG - minifikacja kodu, zmniejszenie dokładności krzywych
  • 56. Optymalizacja grafik • tinypng.com
 https://wordpress.org/plugins/tiny-compress-images/ • tinyjpg.com
 ta sama wtyczka co wyżej ;) • Wtyczka WP smush.it - stała się płatna :(
 https://wordpress.org/plugins/wp-smushit/ • kompresja plików SVG - minifikacja kodu, zmniejszenie dokładności krzywych
  • 57. Optymalizacja grafik • tinypng.com
 https://wordpress.org/plugins/tiny-compress-images/ • tinyjpg.com
 ta sama wtyczka co wyżej ;) • Wtyczka WP smush.it - stała się płatna :(
 https://wordpress.org/plugins/wp-smushit/ • kompresja plików SVG - minifikacja kodu, zmniejszenie dokładności krzywych
  • 58. CSS Sprites • Umieszczamy obrazki 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/
  • 59. CSS Sprites • Umieszczamy obrazki 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/
  • 60. CSS Sprites • Umieszczamy obrazki 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/
  • 61. Zorro SVG Źródło: http://quasimondo.com/ZorroSVG/ • Pozwala uzyskać przezroczyste grafiki zbliżone rozmiarem do plików JPG • Wymaga do działania wsparcia dla SVG (IE9+, 93% pokrycia rynku przeglądarek)
  • 62. Zorro SVG Źródło: http://quasimondo.com/ZorroSVG/ • Pozwala uzyskać przezroczyste grafiki zbliżone rozmiarem do plików JPG • Wymaga do działania wsparcia dla SVG (IE9+, 93% pokrycia rynku przeglądarek)
  • 63. 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)
  • 64. 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)
  • 65. Rozmiar fontów • Optymalizacja poprzez 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
  • 66. Rozmiar fontów • Optymalizacja poprzez 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
  • 67. Rozmiar fontów • Optymalizacja poprzez 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 • Wykorzystanie localStorage do przechowywania fontów
 
 http://www.sitepoint.com/improving-font-performance-subsetting-local-storage/
  • 68. Zewnętrzne usługi • Social media
 http://www.sitepoint.com/social-sharing-hidden-costs/
 http://www.sitepoint.com/social-media-button-links/ • Gravatar
 http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/
 • Youtube, Vimeo etc.
  • 69. Zewnętrzne usługi • Social media
 http://www.sitepoint.com/social-sharing-hidden-costs/
 http://www.sitepoint.com/social-media-button-links/ • Gravatar
 http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/
 Youtube, Vimeo etc.
  • 70. Zewnętrzne usługi • Social media
 http://www.sitepoint.com/social-sharing-hidden-costs/
 http://www.sitepoint.com/social-media-button-links/ • Gravatar
 
 http://www.wpbeginner.com/beginners-guide/how-to-disable-gravatars-in-wordpress/ • Youtube, Vimeo etc.
 http://www.newmediacampaigns.com/blog/lazyytjs-a-jquery-plugin-to-lazy-load-youtube-videos
  • 72. Cache przeglądarki <FilesMatch ".(gif|jpg|jpeg|png|swf|pdf|css|js|html|ico?|xml|txt)$"> FileETag none </FilesMatch> <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" ExpiresByType text/cache-manifest "access plus 0 seconds" ExpiresByType text/html "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType image/x-icon "access plus 1 week" 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" ExpiresByType text/x-component "access plus 1 month" 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" 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>
  • 73. 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
  • 74. 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
  • 75. 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
  • 76. HSTS
  • 78. HSTS HTTP GET / HTTP 301
 Location: https://strona.pl/
  • 79. HSTS HTTP GET / HTTP 301
 Location: https://strona.pl/ HTTPS GET /
  • 80. HSTS • Zmniejsza ilość zapytań do serwera
 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/
  • 81. HSTS • Zmniejsza ilość zapytań do serwera
 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/
  • 82. HSTS • Zmniejsza ilość zapytań do serwera
 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/
  • 83. HSTS • Zmniejsza ilość zapytań do serwera
 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/
  • 84. HSTS Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" Dodajemy w .htaccess:

  • 86. 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/
  • 87. Sposób renderowania strony • Skrypty powinny być ładowane zawsze na końcu • Natychmiastowe wyświetlanie fragmentu strony widocznego na ekranie - unikamy FOUC
 https://adactio.com/journal/8504 - grunt-criticalcss • Do kompresji kodu CSS w sekcji <head> można użyć np. http://refresh-sf.com/
  • 88. Sposób renderowania strony • Skrypty powinny być ładowane zawsze na końcu • Natychmiastowe wyświetlanie fragmentu strony widocznego na ekranie - unikamy FOUC
 https://adactio.com/journal/8504 - grunt-criticalcss • Do kompresji kodu CSS w sekcji <head> można użyć np. http://refresh-sf.com/
  • 89. <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>
  • 90. <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>
  • 91. <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>
  • 92. add_filter('style_loader_src', 'td_style_loader_src', 10, 2); function td_style_loader_src($src, $handle) {      if(!is_admin() && stripos($src, ‘XXXXXX’) === FALSE) {           return false;      } else {           return $src;      } }
  • 93. add_filter('script_loader_src', 'td_script_loader_src', 10, 2); function td_script_loader_src($src, $handle) {      if(!is_admin() && stripos($src, ‘XXXXXX’) === FALSE) {           return false;      } else {           return $src;      } }
  • 94. Można też sprawić, że wolno ładujące się elementy wyglądają na ładujące się szybciej http://blog.placeit.net/ux-tactics-make-slow-things-seem-faster/ Gdy inne metody zawiodą
  • 95. Trzeba poczekać na szybsze protokoły transmisji danych ;-) http://techcrunch.com/2015/04/18/google-wants-to-speed-up-the-web-with-its-quic-protocol/ Gdy inne metody zawiodą
  • 97. Tomasz Dziuda Lead Developer @ @dziudek http://dziudek.pl dziudek@gavick.com