Keš manifest u HTML5
Keš manifest u HTML5 predstavlja softversko svojstvo skladištenja koje omogućava pristup veb aplikaciji bez internet konekcije. Postao je deo World Wide Web Konzorcijum preporuka 28. oktobra 2014. godine.[1] Prema HTML standardu ova opcija će biti uklonjena.[2]
Pozadina
[uredi | uredi izvor]Veb aplikacije se sastoje od veb stranica koje moraju da se preuzmu sa mreže, a za to je potrebna internet konekcija. Međutim, korisnici često ne mogu da se povežu na mrežu jer nisu u mogućnosti. HTML5 pruža mogućnost pristupanja veb aplikaciji bez korišćenja internet konekcije pomoću keš manifesta.
Veb aplikacije se sastoje od resursa koji se prepoznaju po URL-u. To mogu biti HTML, CSS, JavaScript, slike ili bilo koji drugi izvor koji je potreban za izradu veb aplikacije. Njihove adrese mogu da se prekopiraju u manifest datoteku, koju autor veb aplikacije može da redovno ažurira ukazujući tako na nove veb adrese koje su dodate ili obrisane. Pri prvom povezivanju na internet veb pregledač će pročitati HTML manifest datoteku, preuzeće date resurse i sačuvaće ih lokalno. Tada će se, u odsustvu internet konekcije, pregledač veba prebaciti na lokalne kopije i renderovati aplikaciju bez pristupanja mreži.
Osnove
[uredi | uredi izvor]Da bi aplikacije koje nemaju pristup internetu radile, veb programer mora da napravi keš manifest datoteku. Ukoliko veb aplikacija sadrži više od jedne stranice, onda svaka stranica mora da ima manifest atribut koji pokazuje na keš manifest. Svaka stranica koja se referiše na manifest će biti lokalno sačuvana.[3] Keš manifest datoteka je tekstualna datoteka koja se nalazi na nekom drugom delu servera. Ona mora da ima sledeći tip sadržaja:[4]
text/cache-manifest
Sledeći fragment koda mora da bude dodat html elementu kako bi keš manifest datoteka radila.[4]
<!DOCTYPE HTML>
<html manifest="cache.appcache">
<body>
…
</body>
</html>
Argument manifest atributa je relativna ili apsolutna putanja do manifest datoteke.
Razmotrimo HTML datoteku datu ispod. <html> element ukazuje na datoteku koja se zove cache.appcache i koja sadrži listu resursa (npr., test.js, test.css) koji su potrebni da bi ova veb stranica radila bez internet konekcije. Uobičajeni nazivi ove datoteke su cache.manifest i manifest.appcache.
<!—- test.html -->
<!DOCTYPE HTML>
<html manifest="cache.appcache">
<head>
<title>Test</title>
<script src="test.js"></script>
<link rel="stylesheet" href="test.css">
</head>
<body>
Тестирање манифест датотеке.
</body>
</html>
Sintaksa
[uredi | uredi izvor]Ispod je data lista nekih pravila i sintakse potrebne za pisanje manifest datoteke.[5]
CACHE MANIFEST # синтагма изнад је обавезна # ово је коментар # размаци се игноришу # белине се игноришу
Ispod je dat primer keš manifest datoteke.
Primer 1:
CACHE MANIFEST /test.css /test.js /test.png
Ova manifest datoteka navodi tri resursa: CSS datoteku, JavaScript datoteku i PNG sliku. Kada se datoteka iznad učita, pregledač veba će preuzeti test.css, test.js i test.png datoteke iz početnog direktorijuma na veb serveru.[4] Zato će, iako nije povezan na internet korisnik moći da pristupi resursima.
Keš manifest datoteke mogu da koriste i relativne putanje ili čak i apsolutne URL-ove kao što je pokazano ispod.[5][6][7]
Primer 2:
CACHE MANIFEST /main/features.js /main/settings/index.css http://files/images/scene.jpg[mrtva veza] http://files/images/world.jpg[mrtva veza]
Zaglavlja datoteke
[uredi | uredi izvor]Keš manifest datoteka se sastoji iz tri zaglavlja.[4]
- Eksplicitan odeljak sa zaglavljem CACHE.
- Odeljak onlajn belih lista sa zaglavljem NETWORK.
- Rezervni odeljak sa zaglavljem FALLBACK.
Beleška: primer 1 i primer 2 iznad, ne ukazuju na bilo koji odeljak zaglavlja i stoga ih podrazumevano smatramo eksplicitnim odeljkom.
Odeljak onlajn belih lista sa zaglavljem NETWORK
[uredi | uredi izvor]Primer 3:
CACHE MANIFEST NETWORK: /checking.cgi CACHE: /test.css /test.js /test.png
Ovaj primer se sastoji od zaglavlja. Linija NETWORK: je početak odeljka "onlajn bele liste". Resursi koji su navedeni ispod ovog odeljka se nikad ne keširaju i nisu dostupni bez internet konekcije.[4] Stoga, ukoliko se pristupa resursima bez internet konekcije dolazi do greške.
Dolazi do prelaska na eksplicitni odeljak od strane zaglavlja CACHE: i tada resursi (CSS stylesheet, JavaScript i datoteka slike) mogu da se preuzmu i koriste oflajn.
Rezervni odeljak sa zaglavljem FALLBACK
[uredi | uredi izvor]Rezervni odeljak se u keš manifest datoteci koristi za zamenu onlajn resursa koji se ne mogu keširati ili nisu uspešno keširani.[4]
Primer 4:
CACHE MANIFEST FALLBACK: / /offline.html NETWORK: …
U primeru 4, rezervni odeljak se sastoji od jedne jedine linije, tj. / /offline.html. Jedan karakter (/) ispred ‘offline’ će se podudarati sa bilo kojom URL šemom na nečijem sajtu.[4] Ukoliko internet pretraživač ne može da nađe stranicu u appcache, aplikacija će prikazati stranicu /offline.html.
Tok događaja
[uredi | uredi izvor]Događaji proizilaze iz ApplicationCache
JavaScript objekta.
Ukoliko veb pregledač poseti veb stranicu, i prvi put je na toj veb stranici i zbog toga ne prepoznaje njenu manifest datoteku, dogodiće se sledeće:[5]
Checking
događaj - dešava se kada veb pregledač poseti veb stranicu i pročita manifest atribut <html> elementa.Downloading
događaj - dešava se ukoliko se veb pregledač nikad pre nije susreo sa tom manifest datotekom, i tada preuzima sve resurse date u manifest datoteci.Progress
događaj - sadrži informacije o broju preuzetih datoteka, i koliko je još datoteka ostalo da se preuzme.Cached
događaj - dešava se kada su sve datoteke preuzete, a oflajn veb aplikacija opremljena da se koristi bez pristupa mreži.
Ukoliko je veb pregledač ranije posetio veb stranicu i prepoznaje manifest datoteku, dogodiće se sledeće:[5]
Noupdate
događaj - odigrava se ukoliko se keš manifest nije izmenio.Downloading
događaj - ukoliko je keš manifest izmenio resurse sve datoteke će biti ponovo preuzete.Progress
događaj - sadrži informacije o broju preuzetih datoteka, i koliko je još datoteka ostalo da se preuzme.Updateready
događaj - po završtku ponovnog preuzimanja, pokreće se ovaj događaj, koji ukazuje da je nova oflajn verzija spremna za korišćenje.
Ukoliko dođe do greške u bilo kom trenutku događaja navedenih iznad, veb pregledač će pokrenuti Error
događaj i zaustaviti proces. Ispod su date neke grešake koje se mogu dogoditi pri ponovnom preuzimanju resursa.[6]
- Page Not Found (HTTP error 404) ili Page Permanently Gone (HTTP error 410) (Stranica nije nađena ili Stranica je trajno nestala).
- Failure to download the HTML page that pointed to the manifest (Neuspešno preuzimanje HTML stranice koja pokazuje na manifest).[4]
- The cache manifest changed while the update occurred (Došlo je do izmene keš manifesta pri ažuriranju).[4]
- The cache manifest was changed but the browser did not download a resource in the manifest (Došlo je do izmene keš manifesta, ali veb pregledač nije preuzeo resurs iz manifesta).[4]
Vidi još
[uredi | uredi izvor]Reference
[uredi | uredi izvor]- ^ „Application cache as part of the W3C Recommendation”. 28. 10. 2014. Pristupljeno 30. 5. 2016.
- ^ „Offline Web applications is in the process of being removed from the Web platform”. 28. 5. 2016. Pristupljeno 30. 5. 2016.
- ^ Bidelman, Eric (29. 10. 2013). „A Beginner's Guide to Using the Application Cache”. Pristupljeno 23. 4. 2014.
- ^ a b v g d đ e ž z i Pilgrim, Mark (2010). HTML5 Up and Running. O'Reilley. Arhivirano iz originala 03. 10. 2011. g. Pristupljeno 28. 09. 2018.
- ^ a b v g „W3 HTML5 Manifests”. HTML5. Arhivirano iz originala 24. 12. 2010. g. Pristupljeno 3. 4. 2011.
- ^ a b „Dev.Opera”. HTML5. Pristupljeno 3. 4. 2011.
- ^ „WHATWG”. HTML5. Arhivirano iz originala 14. 04. 2011. g. Pristupljeno 3. 4. 2011.
Literatura
[uredi | uredi izvor]- Pilgrim, Mark (2010). HTML5 Up and Running. O'Reilley. Arhivirano iz originala 03. 10. 2011. g. Pristupljeno 28. 09. 2018.