如何在ASPNET中生成HTML5离线Web应用 .docxVIP

  • 1
  • 0
  • 约2.37千字
  • 约 5页
  • 2021-11-05 发布于江苏
  • 举报
. . 传统的 传统的 Web 应用程序有一个很大的症结是当用户的网络连接不好时,应用会 加载失败,为了 解决这一问题,HTML5 加载失败,为了 解决这一问题,HTML5 中引入了 Web 的离线工作的功能。 离线功能使得 离线功能使得 Web 应用程序类似于本机应用程序,当断开网络连接时可以继 续浏览未浏览完成的内 容,离线功能的另一个好处是可以永久缓存静态的内 续浏览未浏览完成的内 容,离线功能的另一个好处是可以永久缓存静态的内 容,而没有缓存过期的限制,这样很大程度上加速了网页的加载速度。 离线应用的创立 不同于传统的缓存机制,HTML5 定义了一套独立的缓存机制,有一个单独的文件来记录要缓存的文件列表,这就意味着用户可以自己决定哪些文件需要缓存。离线应用看起来是个非常酷的特性,并且在 ASP.NET 应用程序中创立一个离线 Web 应用也是非常简单的,构建离线web 应用大概可分两个步骤: 〔1 〕 创立一个离线清单文件 HTML5 离线缓存是基于这个缓存清单来确定缓存文件的,如下的图片显示这个文件的格式: 可以看到这个文件是以 CACHE MANIFEST 开头的,# 后面的内容是注释,说明当前文件的版本号,值得注意的是当这个文件更新的时候,应用程序会重新加载缓存的文件,所以当缓存的文 件有更新的时候,一个让程序重新加载缓存文件的标准方法是修改这个清单中的版本号,这样应用程序就知道需要重新加载缓存的文件。上面的清单的版本号是 0.2,如果清单中的某个文件有更新, 那么只需要把 0.2 修改为 0.3 即可。 如上清单中的路径都是相对路径,所有的相对路径都是基于这个清单文件所在的路径的。我们也可以使用绝对路径来确定要缓存的文件的。 HTML5 标准规定这个清单文件必须以 text/cache-manifest 格式发送到客户端,但是现在没有标准的后缀来识别这一类型文件。在 ASP.NET 中,可以通过一种变通的方式来到达这一目的。 1 〕把清单文件保存为单独文件,可以加任何后缀名,假设保存为manifest.mf 。 using System;代码如下: 1. using System; using System.Web;2. using System.Web; 3. public class Manifest : IHandler { public class Manifest : I Handler { 5. public void ProcessRequest (Context context) { public void ProcessRequest ( Context context) { context.Response.ContentType = text/cache-manifest;7. context.Response.ContentType = text/cache-manifest; html manifest=Manifest.ashx复制代码如下是添加了缓存清单的 aspx 页面: html manifest=Manifest.ashx 复制代码 如下是添加了缓存清单的 aspx 页面: 以上两个步骤就完成了离线应用程序的构建,当程序第一次加载时,会加载这 个缓存清单,并且根据清单中文件列表缓存文件,当浏览器再次加载时就不会 去 效劳器中加载缓存过的文件,可以想象,如果我们把一些静态的网页添加为 context.Response.WriteFile(context.Server.MapPath(manifest.mf)); }9. } 10. 11. public bool IsReusable { get12. get {13. { 14. return false; }15. } 16. } 17. } 复制代码 复制代码 然后在首页页面中把这个 handler 标识为清单文件: 然后在首页页面中把这个 handler 标识为清单文件: 1. 缓存文件,那么用户只需要第一次下载这些缓存的文件,以后就可以向本地应用一样,无 需再连接网络。 离线应用在浏览器中的表现 以下是离线应用在各个浏览器中的表现形式,当用浏览器翻开应用了离线功能的页面,浏览器的表现也是不一样的,FireFox 中会提示是否容许保存内容到本地,效果如下: 当点击 Allow ,浏览器就会自动下载要缓存的内容,并保存到本地,当再次翻开页面时,浏览器首先会加载本地存储的内容。 在 Chrome 和 safari浏览器下,浏览器会自动缓存内容而不会有任何的提示, 但在 Chrome 中你可以查看缓存的内容: 同时也可以看到当前缓存的状态,如上的图片显示当前的状态是 UNCACHED ,意思是还没有把要缓存的内容缓存。具体

文档评论(0)

1亿VIP精品文档

相关文档