Przyspieszanie działania serwisów WWW

18
Przyspieszanie działania serwisów WWW Michał Felski [email protected]

Transcript of Przyspieszanie działania serwisów WWW

Page 1: Przyspieszanie działania serwisów WWW

Przyspieszanie działaniaserwisów WWW

Michał [email protected]

Page 2: Przyspieszanie działania serwisów WWW

Czas ładowania strony: 7,903s

html: 849 ms (10,7 %)

www.adobe.com

1.5Mbps ADSL

Page 3: Przyspieszanie działania serwisów WWW

Czas ładowania strony: 5.583s

html: 816 ms (14,6 %)

sklep.etpro.pl

1.5Mbps ADSL

Page 4: Przyspieszanie działania serwisów WWW

Czas ładowania strony: 9,796s

html: 915 ms (9,3 %)

www.gratka.pl

1.5Mbps ADSL

Page 5: Przyspieszanie działania serwisów WWW

Jak najmniej żądań

łączenie skryptów łączenie CSS mapy obrazkowe obrazy CSS sprites osadzone obrazy preload i post-load

Page 6: Przyspieszanie działania serwisów WWW

Jak najmniej żądań – mapy obrazkowe

server-side <a href="toolbar.php"><img ismap=”ismap” src="toolbar.gif" /></a> → http://toolbar.php?127,13

client-side<img usemap="#map1" border=0 src="toolbar.gif" /><map name="map1"> <area shape="rect" coords="0,0,31,31" href="add.php" title="Add file"> …</map>

Page 7: Przyspieszanie działania serwisów WWW

Jak najmniej żądań – obrazy CSS sprites

<span style=” width: 32px; height: 32px; background-image: url('sprites.gif'); background-position: -260px -90px;"></span>

Rozmiar jednego obrazka jest mniejszy niż kliku mniejszych

Page 8: Przyspieszanie działania serwisów WWW

Jak najmniej żądań – osadzone obrazy

<IMG ALT=”star”SRC="data:image/gif;base64,R0lGODlhDAAMALMLAPN8ffBiYvWWlvrKy/FvcPewsO9VVfajo+w6O/zl5estLv/8/AAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAMAAwAAAQzcElZyryTEHyTUgknHd9xGV+qKsYirKkwDYiKDBiatt2H1KBLQRFIJAIKywRgmhwAIlEEADs=">

IE dopiero od IE 8Firefox akceptuje do 100 KB

Page 9: Przyspieszanie działania serwisów WWW

Jak najmniej żądań

Witryna internetowa JS CSS Obrazy Liczba żądań Rozmiar [KB]allegro.pl 6 1 19 36 111fotka.pl 11 2 34 50 149google.pl 1 0 2 5 22interia.pl 9 1 128 142 437nasza-klasa.pl 18 6 30 58 315onet.pl 2 0 72 90 734wikipedia.org 13 12 32 58 289wp.pl 2 0 89 101 583youtube.com 4 1 20 28 147

adobe.com 16 11 36 66 852sklep.etpro.pl 2 3 16 22 158gratka.pl 15 4 36 62 289

Page 10: Przyspieszanie działania serwisów WWW

Pamięć podręcznaWitryna internetowa Liczba żądań

z pustym buforemLiczba żądań

z pełnym buforem

allegro.pl 36 3fotka.pl 50 16google.pl 5 2interia.pl 142 27nasza-klasa.pl 58 13onet.pl 90 13wikipedia.org 58 3wp.pl 101 18youtube.com 28 12

adobe.com 66 16sklep.etpro.pl 22 1gratka.pl 62 13

Page 11: Przyspieszanie działania serwisów WWW

Pamięć podręcznaExpires: Tue, 09 Mar 2010 19:15:02 GMT

Cache-Control: max-age=31104000

Nazwy plików przy wykorzystaniu cacheglobal.css?123608120 reklama.js?20090310 123603675_image.gif

Konfiguracja nagłówka ETagETag: "c8897e-aee-4165acf0"Last-Modified: Thu, 07 Oct 2004 20:54:08 GMT

If-None-Match: "c8897e-aee-4165acf0"If-Modified-Since: Thu, 07 Oct 2004 20:54:08 GMT

FileETag INode MTime SizeFileETag none

Page 12: Przyspieszanie działania serwisów WWW

Optymalizacja skryptów i CSS

Zewnętrzne skrypty CSSCSS jak najwyżej (sekcja HEAD)LINK zamiast @importunikać wyrażeń w CSSskrypty jak najniżej (przed </body>)minimalizacja skryptów i CSSunikać duplikowania skryptów

body {width: expression(document.body.clientWidth < 600 ? “600px”:“auto” );width-min: 600px;}

Page 13: Przyspieszanie działania serwisów WWW

Optymalizacja obrazówoptymalna liczba kolorów

# identify -verbose image.gif

PNG zamiast GIF# convert image.gif image.png

optymalizacja PNG# pngcrush image.png -rem alla -reduce -brute result.png

optymalizacja JPG# jpegtran -copy none -optimize -perfect src.jpg dest.jpg

nie skalować obrazów w html<img width="100" height="100" src="image.jpg" alt="" />

obiekty poniżej 25K

Page 14: Przyspieszanie działania serwisów WWW

Optymalizacja zapytań

Rozpraszanie zapytań na kilka domen (yimg.com, ytimg.com, images-amazon.com)

redukcja zapytań DNS (przeciętnie 20-120 ms na zapytanie, blokada równoległego pobierania obiektów)

redukcja przekierowańbuforowanie zapytań AJAXGET zamiast POSTunikanie błędu 404kompresja gzip

Page 15: Przyspieszanie działania serwisów WWW

Kompresja odpowiedzi (GZIP)

Zmniejsza czas pobierania treściWspierane przez ponad 90% przeglądarekNiezalecane dla obrazków i PDFKompresja czy obsługa proxy?

Żądanie HTTPAccept-Encoding: gzip, deflate

Odpowiedź HTTPContent-Encoding: gzip

Buforowanie proxy:

Vary: Accept-EncodingVary: Accept-Encoding, User-AgentVary: *Cache-Control: private

Page 16: Przyspieszanie działania serwisów WWW

CDN – Content Delivery Network

Akamai, Limelight, SAVVIS, Mirror ImageValueCDN, Hostway, Amazon CloudFrontCoralCDN, CoDeeNGlobuleTPhttp://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js

Page 17: Przyspieszanie działania serwisów WWW

YSlow

http://developer.yahoo.com/yslow/

Page 18: Przyspieszanie działania serwisów WWW

YSlow - wyniki

Witryna internetowa Wynikallegro.pl B (81)fotka.pl F (57)google.pl A (95)interia.pl F (54)nasza-klasa.pl F (43)onet.pl F (44)wikipedia.org D (68)wp.pl F (48)youtube.com D (67)

adobe.com F (29)sklep.etpro.pl B (88)gratka.pl F (41)

Witryna internetowa Wynikblogger.com C (71)facebook.com C (79)google.com A (96)live.com A (97)msn.com F (49)myspace.com D (64)orkut.com A (98)wikipedia.org D (68)yahoo.com A (96)youtube.com D (67)

TOP 10 Polska TOP 10 Global