Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Zwiksz szybko!
Optymalizacja serwisw
internetowych
Autor: Andrew B. King
Tumaczenie: Marek Suczyk (rozdz. 1 11),
Jacek Smycz (rozdz. 12 19)
ISBN: 83-7361-134-7
Tytu oryginau: Speed Up Your Site Web Site Optimization
Format: B5, stron: 416
Przykady na ftp: 80 kB
Cierpliwo uytkownika jest jak bomba zegarowa. Kade wejcie na Twoj stron
WWW uruchamia odliczanie. Masz zaledwie kilka sekund, by dostarczy
odwiedzajcemu treci, ktrych poszukuje. Jeli nie zdysz, moesz si poegna
ze swoim gociem (i z ewentualnymi zyskami, ktre osignby dziki jego wizycie).
Nie moesz liczy na szybkie cza. W dalszym cigu wielu goci Twojej witryny uywa
sieci telefonicznej i zwykych modemw. Albo zdysz, nim skoczy si ich cierpliwo,
albo przegrasz. Dlatego powiniene sign po t ksik. Dowiesz si z niej, jak
skrci o poow czas wczytywania strony. Zmniejszysz rozmiary plikw HTML,
XHTML, CSS, ilustracji i skryptw JavaScript oszczdzajc dodatkowo na kosztach
czy. Przykady wzite z praktyki przedstawiaj techniki przynoszce rzeczywiste
rezultaty. Po przeczytaniu tej ksiki bdziesz ju wiedzia, jak tworzy strony
pojawiajce si na ekranie w mgnieniu oka.
Nauczysz si:
Przyspiesza adowanie si stron WWW
Angaowa uytkownikw w proces przegldania strony
Analizowa efekty psychologiczne wywoywane wolnym adowaniem si stron
Zmniejsza rozmiary i stopie skomplikowania plikw HTML
Stosowa skrty w CSS
Przyspiesza i odchudza JavaScript
Zmniejsza rozmiary plikw graficznych i multimedialnych
Oszczdza przepustowo czy (a do 60%!) stosujc kompresj HTTP
Andrew B. King (Andy) jest zaoycielem WebReference.com oraz JavaScript.com
(obie witryny zostay nagrodzone w klasyfikacji stron przeznaczonych dla
programistw). WebReference.com utworzona w 1995 roku, a nastpnie w 1997 r.
zaadoptowana przez Macklermedia (obecnie Jupitermedia) urosa do rangi jednej
z najpopularniejszych stron internetowych dla programistw.
Kto wszed na Twoj stron? Nie ka mu czeka!
Praktyczne sposoby przyspieszania stron WWW
Psychologia cierpliwoci co powoduj, e uytkownicy uciekaj ze strony
Oszczdzanie czasu i oszczdzanie przepustowoci: kompresja HTTP
Zmniejszanie rozmiarw plikw graficznych i multimedialnych.
Spis treci
O Autorze .......................................................................................... 9
Przedmowa...................................................................................... 13
Wstp ............................................................................................. 15
Cz I
Psychologia wydajnoci..................................................21
Cz II
Rozdzia 10. Optymalizacja kodu JavaScript pod ktem szybkoci dziaania......... 199
Poziomy projektowania...................................................................................................200
Sprawdzanie zmian .........................................................................................................201
Algorytmy i struktury danych .........................................................................................201
Upraszczanie kodu ..........................................................................................................203
Minimalizacja wspdziaania modelu DOM z wejciem-wyjciem..............................203
Optymalizacja lokalna.....................................................................................................208
Dostrajanie wyrae........................................................................................................220
Podsumowanie ................................................................................................................222
Spis treci
Cz V
Rozdzia 8.
Zaawansowana
optymalizacja kodu CSS
Oprcz omwionych korzyci pyncych z buforowania plikw CSS i zmniejszenia
obcienia cza, CSS pozwala na zastpienie elementw strony, ktre pochaniaj
znaczne zasoby i wyduaj czas adowania (np. grafika nakadkowa), na lekkie
elementy, nieobciajce strony. W tym rozdziale zamieszczone zostay informacje
omawiajce cztery gwne sposoby wykorzystania arkuszy CSS do przyspieszenia
stron internetowych. Zagadnienia te dotycz:
mniejszych rozmiarw arkuszy stylw,
elementw zastpczych,
szybszych tabel,
kontroli ukadu i rozmieszczenia elementw.
162
W powyszym arkuszu mona zauway wiele technik omawianych we wczeniejszych rozdziaach ksiki. Uywane s skrty, jednoznakowe nazwy klas (jak i ),
proste selektory typw (), pseudoklasa
. Arkusz nie jest poczony ze stron,
lecz jest w niej osadzony. Zawsze jednak mona co zrobi lepiej. Wykorzystajmy
skrcone waciwoci i
, jak rwnie skorzystajmy ze skrconego zapisu szesnastkowego:
!"#$$
%&'$"#$
(&'$"#$
*+&'"%
)*+,'#$
-.&!
/0)**!1#
#
2"1-3
163
(&'$"#$
)" *+&'"%
)*+,'#$
-.&!
/0)**!1#
#
2"1-3
W tym miejscu pierwotny arkusz stylw zosta zmniejszony o 20% (z 449 znakw do
360). W dalszej czci optymalizacji mona pogrupowa rodziny czcionki na trzy style
i osobno okreli ich rozmiary:
$
$$"#$
!
%&'
(&'
)" *+&'"%
)*+,'#$
-.&!
/0)**!1#
#
2"1-3
Ilo znakw zmniejszya si do 348. Mona uzyska jeszcze lepszy rezultat uywajc oglnych rodzin czcionki, mniejszych rozmiarw oraz skrconej waciwoci
(listing 8.2).
Listing 8.2. Zoptymalizowany arkusz stylw WebReference.com
$
$%&'
)" *+&'"%
)*+,'
-.&!
/0)**!1#
#
2"1-3
164
Elementy zastpcze
Coraz wicej przegldarek obsuguje pseudoklas
arkusza CSS2. Dziki temu
mona uzyska efekty nakadkowe, ktre pobieraj znacznie mniej zasobw ni JavaScript. Mona wyrni dwa podstawowe sposoby optymalizacji elementw nakadkowych:
za pomoc grafiki nakadkowej CSS2 przeroczyste GIF-y oraz kolorowe
tekstem.
Bez wzgldu na to, z ktrego sposobu skorzystasz, zawsze rezultatem bdzie zmniejszenie iloci da HTTP i wielkoci kodu.
Wszystko, co jest potrzebne, to zaledwie kilka obrazkw z przeroczystymi wycinkami oraz kilka wierszy kodu CSS:
2)*&&
2"1
-&&&&&&
#
2"1
-4455&&
165
Dodatkowe informacje
Wicej informacji o grafice nakadkowej CSS mona znale na nastpujcych stronach:
http://www.alistapart.com/stories/rollovers/
http://www.designmeme.com/zeldman/
166
W momencie, gdy uytkownik wskae cze, zgodnie z powysz zasad kolor ta cza zmieni si na ty. Aby mie pewno, e zmiana koloru ta nie zmniejszy czytelnoci wywietlanego tekstu, naley rwnie okreli kolor pierwszoplanowy:
2#
2"1-3
-&&
##
2"1-3
-&&
Moesz uzyska odwrotny efekt poprzez zamian koloru pierwszoplanowego z kolorem ta.
2
-&&
2"1-
&
#
-.&!
2#
-
&
2"1-&&
##
-
&
2"1-&&
2
#
B2)CD
B
#
#
167
Rysunek 8.2.
Proste pionowe
nakadki CSS2
Aby uzyska efekt nakadkowy na caej szerokoci menu, wykorzystana zostaa sztuczka zapoyczona z www.tantek.com. Szeroko cza jest ustawiana na dla przegldarek innych ni IE6:
#1)1
Autorzy, ktrzy nie chc korzysta z tej sztuczki, mog napisa dla czy
blokowych. Internet Explorer naoy nakadk tylko na cza. Wszystkie pozostae
przegldarki zgodne z CSS2 bd poprawnie obsugiwa cay pojemnik, a cze bdzie aktywne.
Spacje na listingu 8.4 zostay dodane z myl o zachowaniu czy w starszych przegldarkach. Na zewntrz czy znaczniki
mog zostawia pionow luk. Aby
unikn wywietlania luk, naley przenie je na zewntrz czy i nie stosowa stylu
dla przegldarek niezgodnych z CSS:
#1
168
Aby najwyszy element menu by rwnie aktywny, mona zmieni nagwek w styl
cza, analogicznie do pozostaych elementw:
#
1
K
1
J1
Pojawia si jednak inny problem grna krawd menu jest rysowana podwjn lini, gdy zarwno zewntrzny , jak i cze maj krawd grn (rysunek 8.3).
Rysunek 8.3.
Proste pionowe
nakadki CSS2
zwr uwag
na podwjn
krawd grn
Aby pozby si dodatkowej linii, wystarczy usun j z grnej krawdzi , tak jak
zostao to przedstawione poniej (spjrz na rezultat na rysunku 8.4):
#1
)*+,
2"1-
"&
"*
*-&&&
&B11N)GODPB
169
Rysunek 8.4.
Proste pionowe
nakadki CSS2
z pojedyncz
grn krawdzi
Designmeme.com
Stuart Robinson, webmaster na Uniwersytecie Guelph w Kanadzie, na swojej stronie
internetowej uywa dwch typw nakadek CSS2, ktre zostay przedstawione na rysunku 8.5. Z lewej strony widoczne jest menu utworzone za pomoc przeroczystych
GIF-w i pseudoklasy
(bez korzystania z nakadek graficznych JavaScript). Pionowy pasek menu, widoczny po prawej stronie, korzysta natomiast z prostych nakadek CSS2, bez adnej dodatkowej grafiki.
Rysunek 8.5.
Designmeme.com
170
Stuart Robinson jest pionierem w dziedzinie nakadek CSS, ktrych uywa od maja
2001 r.
171
Rysunek 8.7.
Strona BrainJar
Mikea Halla
(http://www.
brainjar.com/)
Rysunek 8.8.
Strona BrainJar.
Hierarchiczne menu
oparte na modelu
DOM
#
1
)
*&&'
1
#
K
1
1
J1
1
#
0#
1
4
#
Jedyn niestandardow rzecz w powyszym zapisie jest klasa . Zoptymalizowany arkusz stylw na listingu 8.5 definiuje pasek nawigacyjny i sprawia, e aktywny
przycisk wyglda tak, jakby by wcinity.
172
173
Rysunek 8.9.
Pasek menu CSS2
174
-
SSTI;4=6?/@U=<> VWTXYYSTI;4=6?/@U=<>
VWWXX
#
1
)
*&&'
1
#
K
1
1
J1
1
#
0#
1
4
#
-
#
1
)
*&&'
1
K
1
1
J1
1
#
0#
1
4
#
-
Nakadkowy pasek menu bdzie zmienia wygld aktywnego przycisku. Przycisk bdzie aktywny, jeeli kursor bdzie znajdowa si w danym menu hierarchicznym, wywietlonym za pomoc tego przycisku. W arkuszu stylw z listingu 8.5 wystarczy
zmieni lokalizacj klasy w HTML. Przykadowo, przy wybraniu pozycji
, warunkowy SSI z listingu 8.7 sprawdza biecy URL i znajduje odpowiedni instrukcj:
-
STI;4=6?/@U=<> VW
WBX
To samo przypisanie mona uzyska za pomoc kodu JavaScript, lecz jak
wida na powyszym przykadzie mona si bez niego obej.
175
L
1
2
41
2
1
Zauwa, e powyszy kod mona zoptymalizowa za pomoc skrconych waciwoci i usunicia paru nadmiarowych informacji. Kocowy, zoptymalizowany kod arkusza stylw zosta przedstawiony na listingu 8.8.
Listing 8.8. Zoptymalizowane menu oparte na elementach listy
-#
1
*+
*+
-
2"1
&!#$$#
$
176
-#1$1
"&
"&
-#
"&
"&
&!#$$#
$
-#
"(
"&
-333
2"1-
&!#$$#
$
-##
-
2"1-...
-#
#
-
2"1-333
Tabele i CSS
W rozdziale 4. Zaawansowane metody optymalizacji dowiedziae si, w jaki sposb naley przyspiesza wywietlanie tabel za pomoc waciwoci CSS2
! oraz elementw
i . Innym sposobem jest wykorzystanie
arkuszy CSS do okrelenia koloru ta komrek tabeli. Dziki temu nie trzeba w kadym miejscu pisa
. Zamiast:
"
-
&&
"
2
"
2
Dodatkowe informacje
Wicej informacji o menu opartym na wewntrznych elementach listy mona znale na
stronie Christophera Schmitta CSSBook.com albo w jego ksice Designing CSS Web Pages, New Riders, 2002 r. Polecam rwnie stron Davea Lindquista, omawiajc menu
DHTML tworzone na bazie list (rozwijane i rozszerzalne poniej 6 kB) http://www.gazingus.
org/dhtml/?id=109.
177
naley napisa:
2"1-
&
2"1-!
2"1-3
Kontrolowanie ukadu
za pomoc arkuszy CSS
Rozmieszczenie elementw strony za pomoc arkuszy CSS moe przeksztaci stary
tabelaryczny ukad w elegancki ukad bazujcy na CSS. Wielu projektantw przekonao si, e zmiana sposobu rozmieszczenia elementw moe zmniejszy obcienie
cza oraz koszty utrzymania. Pozbycie si tabel daje rwnie wiksz elastyczno,
pozwalajc na wywietlanie rnej zawartoci z tymi samymi stylami. Przenoszc
warstw prezentacyjn do arkuszy stylw, struktura dokumentu staje si przejrzysta.
Zmiana ukadu strony sprowadza si do zmiany jednego arkusza stylw. Przeniesienie
zawartoci na inn platform (inn przegldark lub wersj przegldarki) albo inny
typ mediw wymaga jedynie zastosowania innego arkusza stylw i nie zmusza do ponownego przepisywania kodu dokumentu.
Najpopularniejszym ukadem jest struktura dwu- lub trjkolumnowa (zachowanie
zgodnoci z Netscape 4 jest tutaj pewnym wyzwaniem). Spjrzmy na przykadowy
ukad trjkolumnowy z listingu 8.9.
Listing 8.9. Ukad trjkolumnowy stary sposb
+
"G2)"
OS 2)2X
)2)"
O
"CG)
178
Powyszy kod jest znacznie bardziej przejrzysty. Zwr uwag, e elementy s
nazywane funkcjonalnie, a nie na podstawie lokalizacji. Dodajmy teraz CSS, aby odpowiednio rozmieci elementy (listing 8.11).
Listing 8.11. Ukad trjkolumnowy CSS
#-#
2"1-
)1
"&
"&,
#-#
2"1-
)+,'
""&,
"&,
#-
2"1-&
"+,'
"&,
179
Zwikszenie skutecznoci
Im wyej umiecisz gwn zawarto dokumentu w kodzie HTML, tym wiksza bdzie skuteczno wyszukiwania sw kluczowych na stronie. Mona wykorzysta
CSS do sztuczki wywietlania tabeli opisanej w rozdziale 4. Na listingu 8.12 przedstawiony zosta sposb odwrotnego wyrwnywania elementw zamiast przesunicia paska nawigacyjnego do lewej strony gwna zawarto jest przesuwana do
strony prawej.
Listing 8.12. Udoskonalony ukad trjkolumnowy (kod CSS)
#-#
2"1-
)1
"&
"&,
#-
"
)(,'
2"1-&
"&,
"&,
#-#
2"1-
""(,'
"&,
Mona teraz zamieni pozycje -w z , umieszczajc gwn zawarto
wczeniej w kodzie HTML (listing 8.13).
Listing 8.13. Udoskonalony ukad trjkolumnowy (kod HTML)
#
#
"G2)"
OS 2)2X
#
#
"CG) )Q[
#
)2)"
O
#
Strona wyglda identycznie, lecz gwna zawarto jest wczeniej umieszczona w kodzie, dziki czemu jest szybciej wywietlana. Jeeli chcesz, moesz j nawet umieci
na samej grze dokumentu, a dopiero za ni z reklamami i nawigacj.
180
Dodatkowe informacje
Na poniszych stronach znajdziesz dodatkowe informacji o sposobach tworzenia ukadw
dokumentw na podstawie CSS:
http://www.alistapart.com A List Apart korzysta z ukadu opartego na arkuszach
Podsumowanie
Aby w peni wykorzysta arkusz CSS, niezbdne jest przeksztacenie kodu dokumentu. Naley korzysta ze skrconych nazw i , uywa skrconych waciwoci oraz grupowa waciwoci minimalizujc rozmiar arkusza stylw. Naley
zamieni stary tabelaryczny ukad dokumentu oraz nakadki oparte na obrazkach
i JavaScripcie na struktur bazujc na arkuszach CSS. Aby zmniejszy tabele, naley
nada styl za pomoc arkuszy CSS (a nie umieszcza w kadym miejscu waciwoci
). Warto take przenie gwn zawarto dokumentu na wysz pozycj
w kodzie HTML (sztuczka wywietlania tabeli albo metody CSS). Poniej przedstawiona zostaa lista wskazwek omwionych w niniejszym rozdziale:
Uywaj skrconych waciwoci, grupowania i skrtw do optymalizacji
arkuszy CSS.
Zamieniaj kod efektw nakadkowych JavaScript/obrazki na CSS.
Twrz efekty nakadkowe CSS2 za pomoc pseudoklasy
,
wywietlania tabel.
Uywaj arkuszy CSS do ustawiania kolorw komrek tabeli (dziaa tylko
Polecane publikacje
Cascading Style Sheets: The Definitive Guide, Eric Meyer, OReilly 2000r.
181