`

【转】Java 高性能Web 开发(6)-懒加载与预加载

 
阅读更多

预加载和懒加载,是一种改善用户体验的策略,它实际上并不能提高程序性能,但是却可以明显改善用户体验或减轻服务器压力。

预加载原理是在用户查看一张图片时,就将下一张图片先下载到本地,而当用户真正访问下一张图片时,由于本地缓存的原因,无需从服务器端下载,从而达到提高用户体验的目的。为了实现预加载,我们可以实现如下的一个函数。

清单 14. 预加载函数

function  preload(callback) {  
 var imageObj = new Image(); 
 images = new Array(); 
 images[0]="pre_image1.jpg"; 
 images[1]=" pre_image2.jpg"; 
 images[2]=" pre_image3.jpg"; 
 for(var i=0; i<=2; i++) { 
   imageObj.src=images[i]; 
  if (imageObj.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
      callback.call(imageObj); 
   } else { 
        imageObj.onload = function () {// 图片下载完毕时异步调用 callback 函数
        callback.call(imageObj);// 将回调函数的 this 替换为 Image 对象
    }; 
 } 
 } 
 } 

 function callback() 
 { 
  alert(this.src + “已经加载完毕 , 可以在这里继续预加载下一组图片”); 
 } 

 上面的代码,首先定义了 Image 对象,并且声明了需要预加载的图像数组,然后逐一的开始加载(.src=images[i])。如果已经在缓存里,则不做其他处理;如果不在缓存,监听 onload 事件,它会在图片加载完毕时调用。

而懒加载则是在用户需要的时候再加载。当一个网页中可能同时有上百张图片,而大部分情况下,用户只看其中的一部分,如果同时显示上百张,则浪费了大量带宽资源,因此可以当用户往下拉动滚动条时,才去请求下载被查看的图像,这个原理与 word 的显示策略非常类似。

JavaScript 中,它的基本原理是首先要有一个容器对象,容器里面是 img 元素集合。用隐藏或替换等方法,停止 img 的加载,也就是停止它去下载图像。然后历遍 img 元素,当元素在加载范围内,再进行加载(也就是显示或插入 img 标签)。加载范围一般是容器的视框范围,即浏览者的视觉范围内。当容器滚动或大小改变时,再重新历遍元素判断。如此重复,直到所有元素都加载后就完成。当然对于开发来讲,选择已有的成熟组件,并不失为一个上策,Lazy Load Plugin for jQuery 是基于 JQuery 的懒加载组件,它有自己的 官方网站。这是一个不错的免费插件。可以帮助程序员快速的开发懒加载应用。

原创文章@java教程网 转载请标明出处

java教程网编辑发布:希望本系列的文章对你的个人成长和发展有帮助。

java新手入门,开发工具 Java进阶,高级编程,java教程网几乎囊括了java编程的所有方面的资料。

分享到:
评论

相关推荐

    高性能页面加载技术--BigPipe设计原理及Java简单实现

    高性能页面加载技术是现代Web开发中的重要议题,旨在提升用户体验,减少用户等待时间。BigPipe是一种由Facebook提出的高效页面加载策略,它通过将一个页面拆分成多个部分(或称为“管道”),并逐个异步加载这些部分...

    高性能网站建设进阶指南:WEB开发者性能优化最佳PDF

    《高性能网站建设进阶指南》是一本专为WEB开发者设计的性能优化手册,旨在帮助开发者们构建更快、更稳定、更高效的网站。这本书深入探讨了JavaWeb和Java在网站开发中的应用,结合实际案例,提供了丰富的优化策略和...

    高性能网站web开发之图片管理

    在高性能网站Web开发中,图片管理是一个至关重要的环节。它涉及到如何有效地存储、处理、优化以及展示图片,以提升用户体验并降低服务器负载。本篇内容将深入探讨与图片管理相关的技术点,结合提供的"ImageConvert....

    java_如何利用Java开发高性能、高并发Web应用知识.pdf

    在开发高性能、高并发的Java Web应用时,有多个关键知识点需要掌握。首先,我们关注的是数据结构的选择,如在描述中提到了`Vector`类。`Vector`是Java中的一个线程安全的动态数组,但它的性能通常低于非同步的`...

    arcgis-maps-sdk-java-200.1.0.zip

    - **高性能地图渲染**:Java SDK支持2D和3D地图的高效渲染,提供流畅的用户体验。 - **离线地图**:SDK支持地图包和地形包的离线使用,即使在网络不稳定或无网络的环境下也能提供地图服务。 - **数据交互**:可以...

    Java Web程序设计入门课件-JDBC理论.pptx

    Java Web程序设计中,JDBC(Java Database Connectivity)是一个至关重要的概念,它是Java平台标准版(Java SE)的一部分,用于连接Java应用程序与各种关系型数据库。SUN公司开发的JDBC提供了一套标准的API,使得...

    Java Web数据库应用开发

    在Java Web开发中,数据库应用是核心组成部分,它允许开发者存储、检索以及处理大量数据。本实例源代码着重展示了如何在Java Web环境中与数据库进行交互,实现高效且可靠的业务逻辑。下面将详细讲解相关的知识点。 ...

    计算机JAVA语言入门

    - Java应用系统的主要优点包括:易于维护、扩展性好、安全性高以及开发成本相对较低。 总之,Java作为一种强大的、面向对象的编程语言,已经在众多领域内得到了广泛的应用。无论是在Web开发、移动应用开发还是桌面...

    mysql-connector-java-5.1.49.tar.gz

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.49.tar.gz`是一个用于连接Java应用程序与MySQL数据库的驱动包。这个压缩文件包含了JDBC(Java Database Connectivity)驱动,使得...

    语言程序设计资料:基于WEB的JAVA开发设计-JDBC.ppt

    基于WEB的JAVA开发设计,尤其是JDBC(Java Database Connectivity)技术,是Java应用程序与数据库交互的重要途径。JDBC为开发者提供了一种独立于特定数据库的标准化接口,使得开发者可以编写跨平台的数据库应用,而...

    java前台开发笔试

    Java前端开发是构建Web应用程序的重要组成部分,它主要关注用户与应用程序之间的交互和界面设计。在“java前台开发笔试”这个主题中,我们可以深入探讨几个关键的知识点,这些知识点通常是Java前端开发者需要掌握的...

    【Java毕业设计】毕业设计---基于java的软件资源库的实现(后端).zip

    - **分页和懒加载**:对于大量资源,实现分页显示和动态加载,提升用户体验。 - **负载均衡**:在高并发场景下,可以利用Nginx等工具进行负载均衡,提高系统稳定性。 5. **安全性** - **SQL注入防护**:使用预...

    java web整合开发王者归来光盘代码-JSP章节

    这五个技术的整合可以帮助开发者构建出高性能、模块化的Web应用,同时降低了各层之间的耦合度。 在实际开发中,你可能会遇到文件上传、用户认证、权限管理等常见问题,这些都是通过整合这些技术来解决的。例如,JSP...

    java web在线预览pdf、word、excel

    在IT行业中,尤其是在Web开发领域,提供用户在线预览PDF、Word、Excel等文档的功能是一项常见且实用的需求。本文将详细讲解如何利用Java Web技术实现这样的功能,主要涉及Maven构建工具、前端PDF插件以及后台...

    jni-jna-web.zip

    在"jni-jna-web"项目中,可能包含了使用JNI编写的本地方法,这些方法可能是为了提高特定操作的性能,或者调用了无法用纯Java实现的库函数。 JNI的关键步骤包括: 1. 定义本地方法:在Java类中声明native方法,不...

    Java软件开发实战 Java基础与案例开发详解 14-8 练习题 共6页.pdf

    Java EE则主要用于开发Web应用程序和服务端应用程序;Java ME则针对嵌入式设备和移动设备。 #### 1.4 Java SE环境安装和配置 安装Java SE环境首先需要下载JDK(Java Development Kit),然后根据操作系统类型进行...

    mysql-connector-java-5.1.23-bin.zip

    MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在MySQL数据库上执行CRUD(创建、读取、更新、删除)操作...

    mysql-connector-java-5.1.10.rar

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其性能强大且易于使用,广泛应用于Web应用程序、数据存储和分析等场景。MySQL的Java连接器(JDBC驱动)是连接Java应用程序与MySQL数据库的关键组件,它提供了...

    《JAVA WEB服务应用开发详解》代码

    Java Web服务应用开发详解涉及到许多核心技术和概念,这些技术涵盖了从服务器端编程到客户端交互的整个过程。在Java世界中,Web服务主要依赖于Servlet、JSP、JavaServer Faces(JSF)、Java EE(企业版)框架以及XML...

Global site tag (gtag.js) - Google Analytics