Кеш манифест у ХТМЛ5
Kеш манифест у HTML5 представља софтверско својство складиштења које омогућава приступ веб апликацији без интернет конекције. Постао је део World Wide Web Конзорцијум препорука 28. октобра 2014. године.[1] Према HTML стандарду ова опција ће бити уклоњена.[2]
Позадина
[уреди | уреди извор]Веб апликације се састоје од веб страница које морају да се преузму са мреже, а за то је потребна интернет конекција. Међутим, корисници често не могу да се повежу на мрежу јер нису у могућности. HTML5 пружа могућност приступања веб апликацији без коришћења интернет конекције помоћу кеш манифеста.
Веб апликације се састоје од ресурса који се препознају по URL-у. То могу бити HTML, CSS, JavaScript, слике или било који други извор који је потребан за израду веб апликације. Њихове адресе могу да се прекопирају у манифест датотеку, коју аутор веб апликације може да редовно ажурира указујући тако на нове веб адресе које су додате или обрисане. При првом повезивању на интернет веб прегледач ће прочитати HTML манифест датотеку, преузеће дате ресурсе и сачуваће их локално. Тада ће се, у одсуству интернет конекције, прегледач веба пребацити на локалне копије и рендеровати апликацију без приступања мрежи.
Основе
[уреди | уреди извор]Да би апликације које немају приступ интернету радиле, веб програмер мора да направи кеш манифест датотеку. Уколико веб апликација садржи више од једне странице, онда свака страница мора да има манифест атрибут који показује на кеш манифест. Свака страница која се реферише на манифест ће бити локално сачувана.[3] Кеш манифест датотека је текстуална датотека која се налази на неком другом делу сервера. Она мора да има следећи тип садржаја:[4]
text/cache-manifest
Следећи фрагмент кода мора да буде додат html елементу како би кеш манифест датотека радила.[4]
<!DOCTYPE HTML>
<html manifest="cache.appcache">
<body>
…
</body>
</html>
Аргумент манифест атрибута је релативна или апсолутна путања до манифест датотеке.
Размотримо HTML датотеку дату испод. <html> елемент указује на датотеку која се зове cache.appcache и која садржи листу ресурса (нпр., test.js, test.css) који су потребни да би ова веб страница радила без интернет конекције. Уобичајени називи ове датотеке су cache.manifest и 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>
Синтакса
[уреди | уреди извор]Испод је дата листа неких правила и синтаксе потребне за писање манифест датотеке.[5]
CACHE MANIFEST # синтагма изнад је обавезна # ово је коментар # размаци се игноришу # белине се игноришу
Испод је дат пример кеш манифест датотеке.
Пример 1:
CACHE MANIFEST /test.css /test.js /test.png
Ова манифест датотека наводи три ресурса: CSS датотеку, JavaScript датотеку и PNG слику. Када се датотека изнад учита, прегледач веба ће преузети test.css, test.js и test.png датотеке из почетног директоријума на веб серверу.[4] Зато ће, иако није повезан на интернет корисник моћи да приступи ресурсима.
Кеш манифест датотеке могу да користе и релативне путање или чак и апсолутне URL-ове као што је показано испод.[5][6][7]
Пример 2:
CACHE MANIFEST /main/features.js /main/settings/index.css http://files/images/scene.jpg[мртва веза] http://files/images/world.jpg[мртва веза]
Заглавља датотеке
[уреди | уреди извор]Кеш манифест датотека се састоји из три заглавља.[4]
- Експлицитан одељак са заглављем CACHE.
- Одељак онлајн белих листа са заглављем NETWORK.
- Резервни одељак са заглављем FALLBACK.
Белешка: пример 1 и пример 2 изнад, не указују на било који одељак заглавља и стога их подразумевано сматрамо експлицитним одељком.
Одељак онлајн белих листа са заглављем NETWORK
[уреди | уреди извор]Пример 3:
CACHE MANIFEST NETWORK: /checking.cgi CACHE: /test.css /test.js /test.png
Овај пример се састоји од заглавља. Линија NETWORK: је почетак одељка "онлајн беле листе". Ресурси који су наведени испод овог одељка се никад не кеширају и нису доступни без интернет конекције.[4] Стога, уколико се приступа ресурсима без интернет конекције долази до грешке.
Долази до преласка на експлицитни одељак од стране заглавља CACHE: и тада ресурси (CSS stylesheet, JavaScript и датотека слике) могу да се преузму и користе офлајн.
Резервни одељак са заглављем FALLBACK
[уреди | уреди извор]Резервни одељак се у кеш манифест датотеци користи за замену онлајн ресурса који се не могу кеширати или нису успешно кеширани.[4]
Пример 4:
CACHE MANIFEST FALLBACK: / /offline.html NETWORK: …
У примеру 4, резервни одељак се састоји од једне једине линије, тј. / /offline.html. Један карактер (/) испред ‘offline’ ће се подударати са било којом URL шемом на нечијем сајту.[4] Уколико интернет претраживач не може да нађе страницу у appcache, апликација ће приказати страницу /offline.html.
Ток догађаја
[уреди | уреди извор]Догађаји произилазе из ApplicationCache
JavaScript објекта.
Уколико веб прегледач посети веб страницу, и први пут је на тој веб страници и због тога не препознаје њену манифест датотеку, догодиће се следеће:[5]
Checking
догађај - дешава се када веб прегледач посети веб страницу и прочита манифест атрибут <html> елемента.Downloading
догађај - дешава се уколико се веб прегледач никад пре није сусрео са том манифест датотеком, и тада преузима све ресурсе дате у манифест датотеци.Progress
догађај - садржи информације о броју преузетих датотека, и колико је још датотека остало да се преузме.Cached
догађај - дешава се када су све датотеке преузете, а офлајн веб апликација опремљена да се користи без приступа мрежи.
Уколико је веб прегледач раније посетио веб страницу и препознаје манифест датотеку, догодиће се следеће:[5]
Noupdate
догађај - одиграва се уколико се кеш манифест није изменио.Downloading
догађај - уколико је кеш манифест изменио ресурсе све датотеке ће бити поново преузете.Progress
догађај - садржи информације о броју преузетих датотека, и колико је још датотека остало да се преузме.Updateready
догађај - по заврштку поновног преузимања, покреће се овај догађај, који указује да је нова офлајн верзија спремна за коришћење.
Уколико дође до грешке у било ком тренутку догађаја наведених изнад, веб прегледач ће покренути Error
догађај и зауставити процес. Испод су дате неке грешаке које се могу догодити при поновном преузимању ресурса.[6]
- Page Not Found (HTTP error 404) или Page Permanently Gone (HTTP error 410) (Страница није нађена или Страница је трајно нестала).
- Failure to download the HTML page that pointed to the manifest (Неуспешно преузимање HTML странице која показује на манифест).[4]
- The cache manifest changed while the update occurred (Дошло је до измене кеш манифеста при ажурирању).[4]
- The cache manifest was changed but the browser did not download a resource in the manifest (Дошло је до измене кеш манифеста, али веб прегледач није преузео ресурс из манифеста).[4]
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ „Application cache as part of the W3C Recommendation”. 28. 10. 2014. Приступљено 30. 5. 2016.
- ^ „Offline Web applications is in the process of being removed from the Web platform”. 28. 5. 2016. Приступљено 30. 5. 2016.
- ^ Bidelman, Eric (29. 10. 2013). „A Beginner's Guide to Using the Application Cache”. Приступљено 23. 4. 2014.
- ^ а б в г д ђ е ж з и Pilgrim, Mark (2010). HTML5 Up and Running. O'Reilley. Архивирано из оригинала 03. 10. 2011. г. Приступљено 28. 09. 2018.
- ^ а б в г „W3 HTML5 Manifests”. HTML5. Архивирано из оригинала 24. 12. 2010. г. Приступљено 3. 4. 2011.
- ^ а б „Dev.Opera”. HTML5. Приступљено 3. 4. 2011.
- ^ „WHATWG”. HTML5. Архивирано из оригинала 14. 04. 2011. г. Приступљено 3. 4. 2011.
Литература
[уреди | уреди извор]- Pilgrim, Mark (2010). HTML5 Up and Running. O'Reilley. Архивирано из оригинала 03. 10. 2011. г. Приступљено 28. 09. 2018.