Professional Documents
Culture Documents
Problem
Projekty Google
Co optymalizaujemy? Cache Minimalizacja czasu round-trip (RTT) Zmniejszenie rozmiaru requestw Zmniejszenie iloci przesyanych danych Renderowanie Optymalizacja dla urzdze mobilnych Inne techniki PageSpeed Google Public DNS SPDY WebP
Bibliografia Pytania
Fred Wilson tworzc 10 Zotych Zasad tworzenia aplikacji internetowych powiedzia: First and foremost, we believe that speed is more than a feature. Speed is the most important feature. If your application is slow, people wont use it.
Amazon:
100ms nadmiernego czasu
Google:
500ms nadmiernego czasuadowania to 20% mniej
Yahoo!:
400ms nadmiernego czasu adowania powoduje 5-9%
wzrost liczby klikni "Wstecz" przed zakoczeniem adowania strony (Nicole Sullivan, Yahoo!)
Backend
Bardzo wany przy
Frontend
atwiej poprawi ni
TOP10 WEBSITES
Z punktu widzenia uytkownika Czas od wysania dania do penego zaadowania strony, m.in.:
zapytania DNS nawizanie pocze TCP przesy nagwkw HTTP pobieranie danych (lub uycie cache) prasowanie i wykonywanie skryptw renderowanie obiektw na stronie
By moe:
Last-Modified (data)
uywane s heurystyki (czasem zapytania warunkowe GET)
Powinnimy ustawi
("Expires" OR "Cache-Control: max-age) AND ("Last-Modified" OR "Etag")
Zalecenia:
Statyczne dane:
Expires na miesic rok (bliej roku) Last-Modified
Dane mog by cacheowane w publicznych serwerach proxy (np. u ISP) Uytkownik moe uy cache nawet jeeli wchodzi pierwszy (bo inny uytkownik zapisa do cache) Cache-control: public Zalecenia:
Dla danych uywajcych cookie ustawi Cache-control: private Bugi w cache proxy
User dostaje skompresowane dane i nie umie ich zdekompresowa Vary: Accept-encoding dwie wersje (skompresowana i nieskompresowana)
Zazwyczaj 1ms (dla LAN) do 1s (inny kontynent) Bardzo istotny dla danych o maym rozmiarze
Np. dane wyszukiwarki
Jeeli serwer DNS nie ma danych w cache to 1RRT moe oznacza ich kilka Czsto mamy mae TTL (5 minut 1 dzie)
Niektre serwery i tak trzymaj duej
Warto:
(nawet 30 minut) f4
Warto cd.:
Najatwiej: zmniejszy liczb hostw
Zalecenia:
Jak zasb zmienia pooenie
<meta http-equiv="refresh">
Zalecenia:
Zalecenia:
Obrazki adowane na raz w jednym pliku
Zmieniajce si dynamicznie NIE:
Np. obrazki profilowe
Najistotniejsze s obrazki:
Mae Dugo cacheowane
VS
Zalecenia:
CSS zawsze przed JS Kod CSS/JS inlineowany
w HTML na kocu
Unika! Przegldarki nie mog przewidzie co tam bdzie bez sparsowania tego Zalecenia:
Nie robi tak:
Np.
<script> var node = document.createElement('script'); node.type = 'text/javascript'; node.async = true; node.src = 'example.js'; // Now insert the node into the DOM, perhaps using insertBefore() </script>
Powysze dziaa w: IE, FF, Chrome, Safari <script async= " true " > dziaa tylko w: Chrome, FF >3.6
Rwnolege pobieranie z kilku hostw W HTTP 1.1 jest limit na 2 rwnolege poczenia z jednym hostem Wicej hostw = wicej rwnolegoci
Kolejka FIFO
Ale wicej zapyta TCP, DNS No i CPU u uytkownika Optymalnie 2-5 hostw Dobrze nadaje si do danych statycznych (np. obrazki) Mona uy CNAME Moe CDN (Content delivery network) 1 zasb = 1 host
Ciasteczka (limit 1KB) Dane uytkownika (user agent) Dane GET i POST URL
Zalecenia:
W ciasteczku trzymamy tylko ID Co w stylu sesji Ciasteczka wszystkich cieek / zapisywa do
globalnej /
Analogicznie w drug stron
domains
JS, CSS, obrazki nie potrzebuj ciasteczek
Content-encoding: gzip Dane duego rozmiaru (minimum to 0,15KB-1KB) Zalecenia (zwikszajce kompresj):
Kolejno alfabetyczna:
Selektorw CSS Atrybutw w znacznikach
W Google Search zmniejszyo o 1,5% rozmiar
Ten sam URL dla jednego zasobu (jeeli jest na kilku hostach)
Mae obrazki = GIF 10x10 pikseli, < 3 kolory Zapomnijmy o BMP, TIFF Dobra odpowiedni rozmiar kompresji Metoda prb i bdw Nie przesadza z skalowaniem obrazkw w HTML
forum.example.com i developer.example.com
Algorytm:
Dla kadego taga:
Przechodzimy regu po selektorach od prawej do lewej Np. * html #atticPromo ul li a {} #footer h3 {}
Unikajmy:
Wyrae CSS
#myDiv { left: width: }
Zalecenia:
# lub . wystarczy button#backButton VS #backButton .menu-left#newMenuIcon VS #newMenuIcon Najbardziej konkretnie, mniej selektorw treeitem[mailfolder="true"] > treerow > treecell VS .treecell-mailfolder Selektor potomka jest wolny treehead treerow treecell VS treehead > treerow > treecell Uywanie dziedziczenia (# jest konkretniejszy ni .) #bookmarkMenuItem > .menu-left VS #bookmarkMenuItem :hover, :visited tylko do elementw, ktre to obsuguj Spowalnia to IE
Test:
20 000 elementw A Legenda
No style (brak arkusza CSS) Tag (A) Class (.class) Descender (DIV DIV DIV P) Child (DIV > DIV > DIV > P)
pomyli od nowa parsowa Jak w ogle nie podamy to te zgaduje (ale jeszcze wolniej)
Dlaczego?
Wolne CPU (w porwnaniu do PC ) Wolne poczenia sieci mobilnych (RTT) 100KB JS = 0,1s
Zalecenia:
To co dla zwykych stron Opnienie adowania JS adowanie kodu JS jako string
VS
<!-- css, js --> </head> <?php flush(); ?> <body> <!-- content -->
dane)
GET nie
adowanie na przd
Bezwarunkowe od razu Warunkowe
np. jak user co zrobi: wpisze kilka znakw do <input>
Zalety
Wydajno (w wikszoci przypadkw)
Wiele serwerw nie jest przystosowanych do duych przepustowoci i cacheowania Google posiada bardzo dobre rozwizania w tej dziedzinie
Bezpieczestwo
Zawsze aktualne rozwizania zabezpieczajce m.in. przed cache poisoning, DoS Zapowiadany atak Anonymous 31. marca 2012
Prywatno?
Google posiada infrastruktur na caym wiecie Mniejszy koszt dla ISP = nisze ceny usug
Przypiesza HTTP
Moliwo wysania danych (np. CSS/JS), ktre uytkownik i tak bdzie potrzebowa (nie czeka na prob o nie) Priorytetyzacja Kompresja gzip Chrome uywa go gdy korzystamy z:
Wyszukiwarki Gmaila Reklamy Google Chrome sync Twitter Amazon Tutaj powoli lista si koczy
Firefox 11 te obsuguje
Obsuga domylnie wyczona
ssiednich (3 bloki wyej,1 na lewo) Kodujemy jedynie rnic pomidzy przewidywan, a rzeczywist wartoci Duo zer, potem standardowe metody kompresji
Obsuga
Gmail, Picasa, plany do AppEngine Przegldarki: Chrome, plugin do IE, Opera 11, Android Ice
Cream Sandwich Edytory: Pixelmator, ImageMagic, GIMP, Leptonica, XnConvert, ReaConverter, Konvertor, XnView, IrfanView, GDAL
Wady:
plugin do: Photoshopa, Windows Photo Viewer, MS Office 2010 (Windows Imaging Component)
Obrazki s zblurowane bardziej ni np. w JPEG, x264, Theora VP8 uywa blokw 4x4, a JPEG 8x8
JPEG-2000, MS JPEG XR te polegy
https://developers.google.com/speed http://developer.yahoo.com/performance/rules. html http://www.yuiblog.com/blog http://www.stevesouders.com/blog/2012/02/10/t he-performance-golden-rule/ Wkipedia Obrazki z wyszukiwarki Google Wydajno aplikacji webowych (1)
Pawe Bedyski 19/11/2009
Cukierki czekaj