"Advanced HTML" skyrelis

Tęsiame "Advanced HTML" skyrelį. Tai jau penktasis jo leidimas - galite pasitikrinti ankstesniuosius:
"Kaip lankytoją nukreipti į kitą WWW puslapį
"Įlįskite į lankytojų kailį"
"Kaip sužinoti ekrano charakteristikas?"
Vaizdi rašysena - VB Script

Visi lygūs, bet kai kurie lygesni…

Įsivaizduokite, kad turite nuolat kintantį WWW puslapį. Tačiau jame pasikeičia ne visi piešiniai - kai kurie išlieka tie patys. Kad lankytojai visada matytų nuolat atsinaujinantį puslapį nepriklausomai nuo jų naršyklės "kešavimo" (cashe) režimo, paprasčiausias būdas yra į puslapio antraštę įtraukti META direktyvą, nurodančią, kad šis puslapis nekešuotinas:
<META NAME="Pragma" CONTENT="no-cache">
arba
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

Tačiau ne vienam lankytojui palengvintumėte duoną, jei atskirai nurodytumėte, kuriuos piešinius kešuoti, o kuriuos - ne.

1 būdas - naudoti parametrus. Jis ypač efektyvus, kai nauji piešiniai užrašomi tais pačiais vardais kaip seni. Parametrai "apgauna" naršykles, kurios mano, kad tai "programinis" objektas, pvz.,
<IMG SRC="kasdien.gif?ID=19990412">

2 būdas - programinis. Galima iškviesti programą, kuri gražina parametru nurodytą priešinį. Tai tolimesnis ankstesnės galimybės išvystymas. Pvz.,
<IMG SRC="/cgi-bin/vaizdai/pateik.pl?PIC=kasdien.gif">

3 būdas - serverio režimai. "Apache" serveris gali būti sukompiliuotas įtraukiant "mod_headers" modulį (apie tai daugiau žiūrėkite www.apache.org/docs/mod/mod_headers.html). Tada uždrausti kešavimą galima visam katalogui - jame reikia sukurti .htaccess failą, kuriame būtų įrašyta tokia eilutė:
Header Set Pragma "no-cache"

Tą patį galima nurodyti pagrindiniame httpd.conf faile įtraukus tokį aprašą:

<Directory /img/>
Header Set Pragma "no-cache"
</Directory>

Taip pat galima naudoti <Files> (>=1.2 versijoje) arba <FileMatch> direktyvas nurodant nekešavimo režimą atskiriems failams (apie minėtas direktyvas galite daugiau paskaityti www.apache.org/docs/mod/core.html), pvz.,

<Files ~"\.gif$">
Header Set Pragma "no-cache"
</Files>

Piešinių atsiuntimo eilės tvarka

Piešinių atsiuntimo (GET) užklausas naršyklė išsiunčia ta eilės tvarka, kokia yra nuorodos į juos. Toliau jie siunčiami lygiagrečiai ir jų "atvykimo" tvarka gali būti bet kokia. Jei norite patikrinti užklausų eiliškumą, galite perimti "onLoad" įvykį, pvz.,
<IMG SRC="pic.jpg" onLoad='alert("pic.jpg atsiųstas!");'>

Tačiu kaip padaryti, kad piešiniai pasirodytų norima tvarka? Galima pasinaudoti CSS galimybe slėpti objektą. Aėjus tinkamam laikui visi piešiniai "atskleidžiami". Štai tokios piešinio "atskleidimo" galimybės iliustracija (ahtml.gif bus parodomas tik pilnai įkėlus WWW puslapį, t.y. tik tada, kai bus pateiktas log2.gif - net jei šis ir didesnis):

<HTML><HEAD>
<Script Language="JavaScript">
<!--
// ©1999, Copyright to Global Lithuanian Net
// Pavyzdys veikia ir IE ir Netscape programose,
// nors jos naudoja skirtingus metodus
   function im_unhide() {
   if (document.all)
       document["P1"].style.visibility="visible"
  else if (document.layers)
       document.P1.visibility="visible";
 }
//-->
</Script>
</HEAD>
<BODY onLoad='im_unhide();'>
<IMG SRC="..\log2.gif"><BR>
<Script Language="JavaScript">
<!--
if (document.all)
     document.write
      ('<IMG SRC="ahtml.gif" NAME="P1" STYLE="visibility: hidden">')
else
{    document.write ('<LAYER NAME="P1"><IMG SRC="ahtml.gif"></LAYER>')
     document.P1.visibility="hidden"
}
//-->
</Script>
<NOSCRIPT><IMG SRC="ahtml.gif"></NOSCRIPT><BR>&nbsp;
</BODY></HTML>

Spragtelėkite čia, jei norite pažiūrėti, kaip jis "gyvai" veikia!
Parašykite, ar norite gauti pilną šio pavyzdžio paaiškinimą....

Norint geriau įsigilinti į šį pavyzdėlį reikia turėti bent minimalų supratimą apie "JavaScript" kalbą. Todėl, jei bus neaiškumų, kviečiame su šios kalbos (ir formų) pradmenimis kviečiame susipažinti šiame "Vartiklio" puslapyje.

Alternatyvi galimybė - pradžioje pateikti tuščius (arba prastos kokybės piešinius). Tikruosius piešinius įsiminti vaizdų masyve. Pasibaigus puslapio įkėlimui, "pirmapradžius" vaizdus pakeisti tikraisiais piešiniais. Ši galimybė veikia tik IE 3.1 ar NN 3.x (ir aukštesnėje) naršyklių versijose.

Parašykite, ar norite gauti pilną šio alternatyvaus pavyzdžio kodą.
 

Laukiame Jūsų atsiliepimų, komentarų, papildymų šiai temai, naujų klausimų ir pasiūlymų.

Ankstesnės "Advanced HTML" skyrelio temos:
Dygios JavaScript eilutės
Sveikųjų skaičių žaidimai
Kaip nukreipti į kitą WWW puslapį
Įlįskite į lankytojų kailį
Kaip sužinoti ekrano charakteristikas?
Vaizdi rašysena - VB Script
Unix komandinės eilutė
Ruby on Rails

Tcl kalba
ASP patarimų liūnas
Anotacijos Java kalboje
Kaip Web'e atsiranda piešinukai?
AWK kalba - sena ir nuolat aktuali
Veikimo valdymas Unix skriptuose
JavaScript pradmenys
Haketonai
Vartiklis