Spartinimas naudojant podėlį

2014-12-22 09:58 (2014-12-22 10:14)

Kiekvienas atverčiamas tinklalapio puslapis paprastai sudarytas iš daug išorinių elementų – paveikslėlių, CSS, JavaScript, Flash failų, kurie yra siunčiami iš vieno ar keleto serverių. Kiekvieno elemento parsiuntimui interneto tinklu reikalingas laikas. Kuo daugiau elementų siunčiama, tuo ilgiau lankytojui reikia laukti, kol bus parodytas tinklalapis, ypač jei prasta ryšio kokybė. Elementų skaičiaus sumažinimas, sumažina naršyklės užklausų skaičių bei paspartina tinklalapio darbą. Deja, ne visada įmanoma sumažinti tinklalapiui reikalingų elementų skaičių. Tokiu atveju galima siekti sumažinti bendrą serveriui tenkančių užklausų skaičių bei paspartinti tinklalapio įkrovą.

Serveriui pateikiamų užklausų skaičių galima sumažinti, tinklalapyje rodant elementus iš naršyklės laikinosios saugyklos – podėlio (angl. cache), kuriame saugomi anksčiau parsiųsti tinklalapiai ir jų elementai.

Atverčiant kiekvieną naują tinklalapį naršyklė iš serverio parsisiunčia visus tinklalapiui reikalingus elementus (1 pav.) ir laikinai pasideda naršyklės podėlyje.

narsykles_podelis1

Kai tas pats lankytojas vėl aplanko tą patį puslapį, naršyklė stengiasi kuo daugiau elementų paimti iš naršyklės podėlio (2 pav.) ir taip paspartinti tinklalapio atvaizdavimą.

narsykles_podelis2

Jei nenurodyta kitaip, reikalingi elementai iš podėlio bus imami tik tuomet, jei atveriamas tinklalapio puslapis buvo kažkada atvertas ir jo turinys visiškai sutampa su išsaugotu podėlyje. Tačiau, jei tinklalapyje duomenys keičiami dinamiškai (pavyzdžiui, skelbiamos naujienos, rodomas laikas), tai kiekvieną kartą tinklalapis tikrina, ar tinklalapio elementai podėlyje sutampa su serveryje esančiais (3pav., punktyrinė linija) ir sutapusius ima iš podėlio, o nesutapusius parsiunčia iš serverio.

narsykles_podelis3

Kurį iš aukščiau minėtų elementų įkėlimo variantų pasirinkti sprendžia naršyklė, remdamasi HTTP standartais ir savais analizės algoritmais, tačiau ne visada naršyklė gali priimti geriausią sprendimą, todėl yra galimybė naršyklei nurodyti, kurie tinklalapio elementai turi būti imami iš podėlio, prieš tai juos išsaugojus.

Apache serveris turi direktyvas, nurodančias, kiek laiko naršyklė turėtų saugoti tinklalapio elementus podelyje bei prireikus tik juos naudoti. Minėtos direktyvos taip pat nurodo, kiek dienų nelyginti podėlyje esančių failų su serveryje esančiais. Rekomenduojama visus dažnai naudojamus elementus priklausomai nuo galimybių naršyklės podėlyje saugoti bent 1 mėnesį. Tam kataloge, kuriame yra dažnai naudojami elementai (pavyzdžiui, dizaino paveikslėliai), reikia sukurti failą, pavadinimu „.htaccess” ir jame įrašyti tokias direktyvas:

<IfModule mod_expires.c>

ExpiresActive On

ExpiresDefault „access plus 31 days”

</IfModule>

Pirmoji eilutė patikrina, ar serveris turi galimybę nurodyti failų gyvavimo laiką naršyklės podėlyje, antroji įjungia galimybę, o trečioji nurodo, jog naršyklė podėlyje failus gali saugoti 31 dieną nuo parsiuntimo. Praėjus 31 dienai naršyklė vėl patikrins, ar failas podėlyje sutampa su serveryje esančiu ir prireikus parsiųs. Taigi naršyklė 31 dieną žinos, jog reikalingi tinklalapio yra vietoje, o tinklalapis bus atverčiamas greičiau. Priklausomai nuo tinklalapyje esančių elementų, nurodžius podėlyje saugomą laiką, tinklalapio įkrovos laikas sutrumpėja apie 2 kartus. Kiek santykinai paspartėtų tinklalapio įkrovos laikas galima pamatyti lyginant tinklalapio atvėrimo laiką po F5/atnaujinimo mygtuko paspaudimo ir kai nebuvo paspausti šie mygtukai.

Su žemiau esančia direktyva galima nurodyti, jog podėlyje būtų saugomi tik jpg paveikslėliai („A” nuo žodžio „Access”, o skaičius reiškia sekundes):

ExpiresByType image/jpg A2592000

Kiti pavyzdžiai, parodantys įvairių failų tipų ir skirtingą failo gyvavimo laiko panaudojimą:

ExpiresByType text/css „access plus 1 day”

ExpiresByType text/javascript „access plus 20 days”

ExpiresByType image/gif „access plus 3 weeks”

ExpiresByType image/jpg „access plus 1 month”

ExpiresByType image/png „access plus 2 months 5 days 12 hours”

Daugiau informacijos apie failų gyvavimo direktyvas galima rasti adresu http://httpd.apache.org/docs/2.2/mod/mod_expires.html

Pabaigai reikia atkreipti dėmesį, jog podėlyje reikia saugoti retai besikeičiančius tinklalapio elementus. Dažniausiai tai būna dizaino elementai – išoriniai stiliaus failai ir paveikslėliai – bei JavaScript failai. Keičiant šių failų ar apskritai tinklalapio dizainą, reikia atkreipti dėmesį, jog kai kurie lankytojai pakeitimus gali išvysti tik po tam tikro laiko. Kad būtų išvengta šio šalutinio poveikio, pakeitimus reikia planuoti ir failų gyvavimo direktyvas išjungti iš anksto.

Taip pat rekomenduojama atskirti ir skirtinguose kataloguose laikyti dizaino ir turinio elementus – bus patogiau valdyti failų gyvavimo direktyvas, o be to tinklalapyje bus daugiau tvarkos.