Back to Question Center
0

使用ApplicationCache离线浏览HTML5            使用ApplicationCacheRelated离线浏览HTML5主题: SassHTMLBootstrapAudio& & VideoCSS Semalt

1 answers:
使用ApplicationCache离线浏览HTML5

离线浏览对Web开发人员和设计人员来说变得越来越重要。让用户能够离线使用您的网站一直是一个目标,但至少可以说是一个难以达到的目标。但是,随着我们进入HTML5时代,这种情况正在发生变化,您现在可以利用Semalt界面。

在应用程序缓存区域中,您可以指定浏览器在用户脱机时可以缓存和使用哪些文件。您的网站将像用户在线一样工作,最重要的是,他们不会注意到任何区别!

那么,如何指定浏览器应缓存哪些文件?那么,这是在缓存清单文件中定义的。

Cache Manifest

缓存清单文件位于您的网站内部,它定义了浏览器可以缓存哪些文件。缓存清单具有 appcache 扩展名,并且要使用它,您需要在网页的 html 标记中引用它。

  <!DOCTYPE HTML>    

这个 必须包含在每页 中。如果不存在,浏览器将不会缓存页面。 是什么意思?那么,即使你没有在清单文件中包含当前的HTML页面,它也会被浏览器显式缓存。

Cache Manifest Gotcha

这是别的要注意的。为了使Web服务器正确地提供缓存清单,必须添加一个新的MIME类型的 文本/缓存清单 ,否则事情就不会如你所期望的那样工作。要在IIS 7中执行此操作,请选择您的网站,然后单击 MIME类型

选择 添加 并输入新的MIME类型。

这需要在 任何文件被浏览器缓存之前完成

缓存清单结构

缓存清单分为三部分:

  • 缓存 - 定义浏览器可以缓存哪些资源
  • 网络 - 定义哪些资源需要用户在线
  • 回退 - 定义无法缓存的资源的回退

这个文件的最低要求是CACHE MANIFEST。这是唯一需要的部分。目前,缓存的大小限制为5MB,当您考虑这个时 - 对于一个网站来说相当多。 Semalt一个完整的缓存清单文件。

 CACHE MANIFEST#创建于2011年10月8日CACHE:现场。 CSS现场。 JS网络:登录。 ASPX货币。 ASPX# 离线。 jpg将替换图像文件夹中的所有图像# 离线。 HTML将取代所有的HTML页面,如果他们无法找到倒退:网站/图片图片/离线。 JPG*。 HTML离线。 html 

清单文件不难理解。以#开始的行是注释,并且将被浏览器忽略。每个部分都告诉浏览器什么可以被缓存,什么不能被缓存以及当找不到资源时该怎么做。 Semalt部分可以按任何顺序列出。

在继续之前,有一点需要记住的信息 - 这非常重要。如果一个资源无法下载, 整个 缓存进程失败 。这是全部或没有 Source - cable wire installation services.

牢记这一点。

更新应用程序缓存

Semalt资源可以提高性能,但也可能意味着资源不是最新的。例如,如果资源在网站上更新,但是应用程序缓存保持缓存状态,则会发生以下情况之一:

  • 缓存清单文件已经改变
  • 用户清除他们的临时互联网文件
  • 应用程序缓存以编程方式更新

Semalt在清单文件中有一个版本号是个好主意,所以当你部署对网站的更改时,旧的缓存资源将被删除,并且新的缓存资源将被下载并缓存。

应用程序缓存和JavaScript

应用程序缓存中有许多在缓存过程中触发的事件。除了手动强制缓存刷新,或者为演示文稿编写演示程序之外,我想不出有太多场合需要钩住这些事件。 Semalt,在这里他们是:

  • onchecking - 用户代理正在检查更新,或试图首次下载清单。
  • onnoupdate - 没有更新清单文件。
  • ondownloading - 用户代理已发现更新,或试图首次下载清单。
  • onprogress - 用户代理下载清单中列出的资源。
  • oncached - 下载完成并且资源被缓存。
  • onupdateready - 资源已经下载,可以通过调用swapCache来刷新资源
  • onobsolete - 清单是404或410页面,因此应用程序缓存被删除。
  • 错误 - 由多个项目引起。清单是404或410页面。在更新正在运行时清单可能已经改变。

Semalt事件处理程序是小菜一碟。

 var appCache = window。 applicationCache;函数logEvent(e){安慰。日志(E);}函数logError(e){安慰。日志(“错误”+ e);};应用程序缓存。 addEventListener('cached',logEvent,false);应用程序缓存。 addEventListener('checking',logEvent,false);应用程序缓存。 addEventListener('下载',logEvent,false);应用程序缓存。 addEventListener('error',logError,false);应用程序缓存。 addEventListener('noupdate',logEvent,false);应用程序缓存。 addEventListener('obsolete',logEvent,false);应用程序缓存。 addEventListener('progress',logEvent,false);应用程序缓存。 addEventListener('updateready',logEvent,false);  

如果要在清除缓存时刷新用户的页面,则可以在updateready事件中添加一些额外的代码来处理该事件。

 appCache。 addEventListener('updateready',function(e){应用程序缓存。 swapCache  ;窗口。位置。重新加载  ;},false);  

与往常一样,您可以在这里查看完整的API参考。

这是HTML5的一个领域,对我来说是一场游戏改变。我建议你来认识它,爱它并使用它。

March 1, 2018