在使用jQuery Mobile进行开发的时候可以选择单页模版和多页模版,在使用单页模版的时候从一个页面跳转到另一个页面的时候需要从服务器请求,用户会感到略有停顿。使用多页模版,可以改善页面跳转之间的流畅性,但是多个页面要一次性下载,所以下载时间变长,用户体验也会受到影响。

在基于预取技术的开发中,当第一个页面的DOM对象加载完成后,jQuery Mobile会对标记data-prefetch的链接地址进行预取操作。预取的详细过程如下:

注意:使用预取功能时,不建议给所有链接都添加data-prefetch属性,因为过多的data-prefetch属性导致移动设备需要预取的页面数量过多,加载的DOM对象过大,导致手机内存消耗,部分手机运行缓慢甚至崩溃。

为了有效节省移动设备浏览器的内存资源,对于没有标记缓存的页面,在访问下一个页面的时候将被清理掉。

如果不想清理掉之前页面在浏览器中的缓存,可以在相应的DOM对象上添加data-dom-cache="true",其实还有一个更好的方法,通过HTML5的离线应用功能将页面内容缓存在本地。

相关示例代码如下:

<!DOCTYPE html>
<html>
<head>
<title>练习</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" />
<link href="css/jquery.mobile-1.0.1.min.css"
rel="stylesheet" type="text/css"/>
<script src="js/jquery-1.6.4.js"
type="text/javascript" ></script>
<script src="js/jquery.mobile-1.0.1.js"
type="text/javascript" ></script>
</head>
<body>
<div id="page_PageTransition" data-role="page" data-dom-cache="true">
<header data-role="header">
<h1>预取页面处理</h1>
</header>
<div class="content" data-role="content">
<p>这段演示将呈现采用与不采用预取技术的两种页面切换方式。</p>
<a href="PrefetchPage01.html" data-prefetch>采用预取技术的页面</a><br/>
<a href="PrefetchPage02.html" rel="external">传统的页面跳转实现</a>
</div>
</div>
</body>
</html>

PrefetchPage01.html

<section id="page_PageTransition2" data-role="page">
<header data-role="header">
<h1>页面跳转</h1>
</header>
<div class="content" data-role="content">
<p>跳转到经过预取技术的页面</p>
</div>
</section>

PrefetchPage02.html

<!DOCTYPE html>
<html>
<head>
<title>练习</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" />
<link href="css/jquery.mobile-1.0.1.min.css"
rel="stylesheet" type="text/css"/>
<script src="js/jquery-1.6.4.js"
type="text/javascript" ></script>
<script src="js/jquery.mobile-1.0.1.js"
type="text/javascript" ></script>
</head>
<body>
<section id="page_PageTransition3" data-role="page">
<header data-role="header">
<h1>页面跳转</h1>
</header>
<div class="content" data-role="content">
<p>跳转到传统的JQuery Mobile页面</p>
</div>
</section>
</body>
</html>

最新文章

  1. ReactJS分析之入口函数render
  2. sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO
  3. AlwaysOn可用性组功能测试(一)--AlwaysOn故障转移测试
  4. EF中无法使用时间转字符串
  5. scala学习心得3
  6. Java基础之泛型——使用泛型链表类型(TryGenericLinkedList)
  7. android-exploitme(一):生成apk
  8. Android 下拉刷新控件Android-PullToRefresh
  9. BZOJ.5467.[PKUWC2018]Slay the Spire(DP)
  10. python----常见练习题
  11. visual studio vode 汉化
  12. 2019.03.28 bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)
  13. 编写支持SSR的通用组件指南
  14. Spring-Boot 内置静态资源文件地址修改
  15. Unicode编码学习
  16. [OpenCV] Samples 17: Floodfill
  17. Redis cluster集群:原理及搭建
  18. nginx并发连接控制模块ngx_http_limit_conn_module
  19. .net mvc nopi生成word
  20. 微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)

热门文章

  1. BZOJ4864: [BeiJing 2017 Wc]神秘物质(Splay)
  2. 关于搭建Session服务器(转载)
  3. xml数据文件上传至数据库
  4. asp.net 查询sql数据表的网页模板
  5. LINUX设备驱动程序笔记(三)字符设备驱动程序
  6. golang recover panic 流程控制的可达与不可达
  7. 原生js大总结三
  8. 00090_字节输入流InputStream
  9. Django中pycharm中 报错 ---ValueError: The field admin.LogEntry.user was declared with a lazy reference to &#39;system.sysuser&#39;, bu
  10. stm32的dma缓冲区长度,,存放数据数组会不会冲掉