• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > html5 >

HTML5::初学者使用 Application Cache 指南(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-03-19点击:

  下面的manifest文件定义了一个“catch-all”页面(offline.html),这个页面将会在用户试图离线访问网站根节点时显示。它还指明了需要联网使用的其他资源(如远程站点上的资源)。

  CACHE MANIFEST

  # 2010-06-18:v3

  # Explicitly cached entries

  index.html

  css/style.css

  # offline.html will be displayed if the user is offline

  FALLBACK:

  / /offline.html

  # All other resources (e.g. sites) require the user to be online.

  NETWORK:

  *

  # Additional resources to cache

  CACHE:

  images/logo1.png

  images/logo2.png

  images/logo3.png

  注意:引用了你的manifest文件的HTML文件都会自动被缓存,因此,没有必要在你的manifest文件中再指定这个文件,但是,在manifest文件中指定这个文件是一种更好的做法。

  注意:页面上基于SSL的HTTP cache headers以及caching restrictions都会被cache manifests重写。因此,基于https的页面也能离线工作。

  更新缓存(CACHE)

  如果一个应用是在离线情况下,那么它会保持它的缓存状态,除非有以下事件发生:

  用户清除了浏览器中存储有你的站点的数据。

  manifest file 被修改了。注意:修改了在manifest文件中列出的某个文件并不会让浏览器重新缓存资源。必须是manifest文件本身改变了,才会重新进行缓存。

  app cache通过编程更新了。

  缓存状态CACHE STATUS

  在程序中,你可以通过window.applicationCache 对象来访问浏览器的app cache。你可以查看 status 属性来获取cache的当前状态:

 

  var appCache = window.applicationCache;

  switch (appCache.status) {

  case appCache.UNCACHED: // UNCACHED == 0

  return ‘UNCACHED’;

  break;

  case appCache.IDLE: // IDLE == 1

  return ‘IDLE’;

  break;

  case appCache.CHECKING: // CHECKING == 2

  return ‘CHECKING’;

  break;

  case appCache.DOWNLOADING: // DOWNLOADING == 3

  return ‘DOWNLOADING’;

  break;

  case appCache.UPDATEREADY: // UPDATEREADY == 4

  return ‘UPDATEREADY’;

  break;

  case appCache.OBSOLETE: // OBSOLETE == 5

  return ‘OBSOLETE’;

  break;

  default:

  return ‘UKNOWN CACHE STATUS’;

  break;

  };

 

  为了通过编程更新cache,首先调用 applicationCache.update()。这将会试图更新用户的 cache(要求manifest文件已经改变)。最后,当 applicationCache.status 处于 UPDATEREADY 状态时, 调用applicationCache.swapCache(),旧的cache就会被置换成新的。

 

  var appCache = window.applicationCache;

  appCache.update(); // Attempt to update the user’s cache.

  …

  if (appCache.status == window.applicationCache.UPDATEREADY) {

  appCache.swapCache(); // The fetch was successful, swap in the new cache.

  }

 

  注意:像这样使用 update()和swapCache()并不会将更新后的资源 呈现给用户。这仅仅是让浏览器检查manifest文件是否发生了更新,然后下载指定的更新内容,重新填充app cache。因此,要让用户看到更新后的内容,需要两次页面下载,一次是更新app cache,一次是更新页面内容。

  好消息是,你可以避免两次页面下载带来的麻烦。为了让用户能看到你的站点的最新版本,设置一个监听器来监听页面加载时的updateready 事件。

 

  // Check if a new cache is available on page load.

  window.addEventListener(‘load’, function(e) {

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ