HTML5 应用程序缓存

使用应用程序缓存,通过创建 cache manifest 文件,可轻松创建 web 应用的离线版本。

什么是应用程序缓存?

HTML5 引入了应用程序缓存(Application Cache),这意味着可对 web 应用进行缓存,并可在没有因特网连接时进行访问。

应用程序缓存为应用带来三个优势:

  1. 离线浏览 - 用户可在应用离线时使用它们
  2. 速度 - 已缓存资源加载得更快
  3. Kumpatia mabaki ya msimbo - kizito kinataza kusafiri kwa mbali kutoka kwa msimbo wa kawaida ambao yana msasabuhali ama yana mabadiliko

浏览器支持

表格中的数字指示完全支持应用程序缓存的首个浏览器版本。

API
Cache Application 4.0 10.0 3.5 4.0 11.5

Mfano wa HTML Cache Manifest

Mfano hii inatoa hatua ya HTML ya mafaa ya kawaida na faili ya kawaida ya kumbukumbu (kwa sababu ya kumtaarifu):

Mfano

!DOCTYPE HTML
<html manifest="demo.appcache">
<body>
Maelezo ya mafaa ......
</body>
</html>

Tukifanya tena

Muafaka wa Cache Manifest

Kuamua kwa sababu ya kufanya kwa sababu ya kumtaarifu wa kawaida kwa sababu ya kumtaarifu wa kawaida, itakuwa inahitaji kuwa na faili ya manifest ya kawaida kwenye kina ya <html> ya hatua:

!DOCTYPE HTML
<html manifest="demo.appcache">
...
</html>

Wengi wa picha ambao walikuwa wanatumia faili ya manifesto kwa sababu ya kumtaarifu wa kumtaarifu kwa sababu ya mawasiliano ya mtumishi wa huzuni kwa sababu ya kumtaarifu. Kama hauwezi kumtaarifu faili ya manifesto, haujafikia kumbukumbu (kama walitumia faili ya manifesto ya kawaida).

Inaripotiwa kwamba faili ya kuadilifu ya faili ya manifesto ni: ".appcache".

Tafadhali,Faili ya manifesto inahitaji kufanana na MIME-type ya kawaida, yaani "text/cache-manifest". Inahitaji kusimamishwa kwenye mtandao wa kimataifa.

Faili ya Manifesto

Faili ya manifesto inaonekana kama faili ya matukio ya mawili, inaonekana kwa kumwambia vifaa ambavyo vinapatikana kwenye kumbukumbu (na vifaa ambavyo haviwezi kufikia kumbukumbu).

Faili ya manifesto ina sehemu tatu:

  • CACHE MANIFEST - Inafikia hapa kwa ajili ya mafaa ambao yanaendelea kufikia kumbukumbu baada ya kumpakisha mara ya kwanza
  • NETWORK - Inafikia hapa kwa ajili ya mawasiliano wa mafaa ambao hauwezi kufikia kumbukumbu
  • FALLBACK - Inafikia hapa kwa ajili ya faida ya mawasiliano ambayo inadai faida ya uharibifu wa wengi (kama ukurungu wa 404).

CACHE MANIFEST

Muonekano wa kwanza, CACHE MANIFEST, ni lazima:

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

Faili ya manifesto inaonyesha tatu ya mafaa: faili ya CSS, picha ya GIF, na faili ya JavaScript. Kwa sababu faili ya manifesto inapakisha, vifaa hivi vinapatikana kwenye mtokeo wa weba. Kisha, tena, tena, kama mtumishi anafikia mawasiliano na Ineteret, mafaa hivi yanaendelea kuitumiwa.

NETWORK

Mawasiliano wa NETWORK hii inasababisha wasiliana wa faili "login.php" haujafikia kumbukumbu, pia hauwezi kutumika kwa sababu ya uharibifu wa mawasiliano:

NETWORK:
login.asp

可以使用星号来指示所有其他其他资源/文件都需要因特网连接:

NETWORK:
*
FALLBACK

下面的 FALLBACK 部分规定如果无法建立因特网连接,则用 "offline.html" 替代 /html/ 目录中的所有文件:

FALLBACK:
/html/ /offline.html

注释:第一个 URI 是资源,第二个是替补。

更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

  • 用户清空浏览器缓存
  • manifest 文件被修改(参阅下面的提示)
  • 由程序来更新应用缓存

实例 - 完整的 Cache Manifest 文件

CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html/ /offline.html

提示:以 "#" 开头的是注释行,但也可满足其他用途。应用的缓存只会在其 manifest 文件改变时被更新。如果您编辑了一幅图像,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

关于应用程序缓存的注意事项

请留心缓存的内容。

一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件。为了确保浏览器更新缓存,您需要更新 manifest 文件。

注释:浏览器对缓存数据的容量限制可能不太一样(某些浏览器的限制是每个站点 5MB)。