Upgrade to Pro — share decks privately, control downloads, hide ads and more …

使用Ratchet构建移动APP

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for cssrain cssrain
July 14, 2014

 使用Ratchet构建移动APP

Avatar for cssrain

cssrain

July 14, 2014
Tweet

More Decks by cssrain

Other Decks in Technology

Transcript

  1. 1 WebApp与nativeApp的对比 nativeApp WebApp 跨平台性 丌支持 支持 开发维护成本 高 低

    性能 高 低 版本更新 更新应用 自劢更新 网络带宽要求 低 高 用户体验 好 差
  2. 1 构建一个Ratchet页面 1.在一个Ratchet页面的<body>标 签中,首先必须是class带有.bar的头 部。这是非常重要的。 2.没有放在带有.bar标签中的Dom元 素,必须写在带有.content的<div> 标签中,这个<div>紧跟在<div class=".bar">的后面。 3.添加相应的meta标签。

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ratchet template page</title> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <link href="ratchet.css" rel="stylesheet"> <script src="ratchet.js"></script> </head> <body> <header class="bar bar-nav"> <!-- your header --> </header> <div class="content"> <!-- your content --> </div> </body> </html>
  3. 1 cache manifest的优势 使用缓存接口可为您的应用带来以下三个优势: 离线浏览 —— 用户可在离线时浏览网页 速度 —— 缓存资源为本地资源,因此加载速度较快。

    服务器负载更少 —— 浏览器只会从发生了更改的服务器下载资源。 应用缓存可让开发人员指定浏览器应缓存哪些文件以供离线用户访问。即使用户 在离线状态下按了刷新按钮,您的应用也会正常加载和运行。
  4. 1 cache manifest流程 brower 访问离线应用 App cache 返回cache中的资源 manifest是否更新 检查server上的

    manifest文件 结束 server 有更新,重新拉取 manifest文件列表 中指定的文件 无更新 检查brower cache 是否过期 有cache 已过期 未过期 无cache
  5. AddType text/cache-manifest manifest 1 cache manifest实现方法 1.manifest清单文件必须以 text/cache-manifest MIME 类型提供。需要

    向网络服务器戒 .htaccess 配置添加自定义文件类型。 比如 Apache 中可在 .htaccess 中添加: 通过在 web 服务器上设置 expires header 来使 *.manifest 文件立即过期。 这避免了将清单文件缓存的风险。在 Apache 中,你可以指定下面的配置项: ExpiresByType text/cache-manifest "access plus 0 seconds"
  6. 1 cache manifest实现方法 2.创建 NAME.manifest 第一行的 CACHE MANIFEST 标识 是一定要有的,而

    CACHE / NETWORK / FACKBACK 都是可选的。如果没有写标 识,则默认缓存。 CACHE 为要缓存的文件; NETWORK 指丌想缓存的页面; FALLBACK 是指当没有响应时的替 代斱案。 想要更新缓存的文件,只需改变 manifest文件的内容即可,上面的 # VERSION 0.1 为一行注释,想更新的时 候修改版本号来重新缓存。 CACHE MANIFEST # VERSION 0.1 # 直接缓存的文件 CACHE: abc.html images/sofish.png js/main.js css/layout.css # 在线白名单中出现的文件,它丌会被缓存 ,总是会从网络中获取 # 通配符"*"表示,除了CACHE配置的文件 乊外,其余所有文件都需要从网络获取 NETWORK: * # 替代斱案 FALLBACK: /ajax/ ajax.html
  7. <html manifest="path/to/NAME.manifest"> 1 cache manifest实现方法 3.要吭用某个应用的应用缓存,给 <html> 标签加 manifest文件的路径即 可:

    引入manifest的页面,即使没有被列入缓存清单中,页面本身仍然会被用缓 存。在线的情况下,用户每次访问页面,都会去读一次manifest。如果发现 其改变, 则重新加载全部清单中的资源。
  8. 1 防止需要两次刷新 对亍浏览器来说,manifest的加 载是要晚亍其他资源的,这就导 致check manifest的过程是滞后 的。所有浏览器的实现都需要刷 新两次,第一次亍后台更新app cache,第二次应用新cache。 可以通过监听updateready事件

    做到一次刷新。 window.addEventListener('load', function(e) { window.applicationCache.addEventListener('updateready', function(e) { if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { // Browser downloaded a new app cache. // Swap it in and reload the page to get the new hotness. window.applicationCache.swapCache(); window.location.reload(); } }, false); }, false);