Кеш манифест у HTML5

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]

  1. Експлицитан одељак са заглављем CACHE.
  2. Одељак онлајн белих листа са заглављем NETWORK.
  3. Резервни одељак са заглављем 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]

Види још

уреди

Референце

уреди
  1. ^ „Application cache as part of the W3C Recommendation”. 28. 10. 2014. Приступљено 30. 5. 2016. 
  2. ^ „Offline Web applications is in the process of being removed from the Web platform”. 28. 5. 2016. Приступљено 30. 5. 2016. 
  3. ^ Bidelman, Eric (29. 10. 2013). „A Beginner's Guide to Using the Application Cache”. Приступљено 23. 4. 2014. 
  4. ^ а б в г д ђ е ж з и Pilgrim, Mark (2010). HTML5 Up and Running. O'Reilley. Архивирано из оригинала 03. 10. 2011. г. Приступљено 28. 09. 2018. 
  5. ^ а б в г „W3 HTML5 Manifests”. HTML5. Архивирано из оригинала 24. 12. 2010. г. Приступљено 3. 4. 2011. 
  6. ^ а б „Dev.Opera”. HTML5. Приступљено 3. 4. 2011. 
  7. ^ „WHATWG”. HTML5. Архивирано из оригинала 14. 04. 2011. г. Приступљено 3. 4. 2011. 

Литература

уреди

Спољашње везе

уреди