预加载和懒加载,是一种改善用户体验的策略,它实际上并不能提高程序性能,但是却可以明显改善用户体验或减轻服务器压力。
预加载原理是在用户查看一张图片时,就将下一张图片先下载到本地,而当用户真正访问下一张图片时,由于本地缓存的原因,无需从服务器端下载,从而达到提高用户体验的目的。为了实现预加载,我们可以实现如下的一个函数。
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编程的所有方面的资料。
相关推荐
高性能页面加载技术是现代Web开发中的重要议题,旨在提升用户体验,减少用户等待时间。BigPipe是一种由Facebook提出的高效页面加载策略,它通过将一个页面拆分成多个部分(或称为“管道”),并逐个异步加载这些部分...
《高性能网站建设进阶指南》是一本专为WEB开发者设计的性能优化手册,旨在帮助开发者们构建更快、更稳定、更高效的网站。这本书深入探讨了JavaWeb和Java在网站开发中的应用,结合实际案例,提供了丰富的优化策略和...
在高性能网站Web开发中,图片管理是一个至关重要的环节。它涉及到如何有效地存储、处理、优化以及展示图片,以提升用户体验并降低服务器负载。本篇内容将深入探讨与图片管理相关的技术点,结合提供的"ImageConvert....
在开发高性能、高并发的Java Web应用时,有多个关键知识点需要掌握。首先,我们关注的是数据结构的选择,如在描述中提到了`Vector`类。`Vector`是Java中的一个线程安全的动态数组,但它的性能通常低于非同步的`...
- **高性能地图渲染**:Java SDK支持2D和3D地图的高效渲染,提供流畅的用户体验。 - **离线地图**:SDK支持地图包和地形包的离线使用,即使在网络不稳定或无网络的环境下也能提供地图服务。 - **数据交互**:可以...
Java Web程序设计中,JDBC(Java Database Connectivity)是一个至关重要的概念,它是Java平台标准版(Java SE)的一部分,用于连接Java应用程序与各种关系型数据库。SUN公司开发的JDBC提供了一套标准的API,使得...
在Java Web开发中,数据库应用是核心组成部分,它允许开发者存储、检索以及处理大量数据。本实例源代码着重展示了如何在Java Web环境中与数据库进行交互,实现高效且可靠的业务逻辑。下面将详细讲解相关的知识点。 ...
- Java应用系统的主要优点包括:易于维护、扩展性好、安全性高以及开发成本相对较低。 总之,Java作为一种强大的、面向对象的编程语言,已经在众多领域内得到了广泛的应用。无论是在Web开发、移动应用开发还是桌面...
MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.49.tar.gz`是一个用于连接Java应用程序与MySQL数据库的驱动包。这个压缩文件包含了JDBC(Java Database Connectivity)驱动,使得...
基于WEB的JAVA开发设计,尤其是JDBC(Java Database Connectivity)技术,是Java应用程序与数据库交互的重要途径。JDBC为开发者提供了一种独立于特定数据库的标准化接口,使得开发者可以编写跨平台的数据库应用,而...
Java前端开发是构建Web应用程序的重要组成部分,它主要关注用户与应用程序之间的交互和界面设计。在“java前台开发笔试”这个主题中,我们可以深入探讨几个关键的知识点,这些知识点通常是Java前端开发者需要掌握的...
- **分页和懒加载**:对于大量资源,实现分页显示和动态加载,提升用户体验。 - **负载均衡**:在高并发场景下,可以利用Nginx等工具进行负载均衡,提高系统稳定性。 5. **安全性** - **SQL注入防护**:使用预...
这五个技术的整合可以帮助开发者构建出高性能、模块化的Web应用,同时降低了各层之间的耦合度。 在实际开发中,你可能会遇到文件上传、用户认证、权限管理等常见问题,这些都是通过整合这些技术来解决的。例如,JSP...
在IT行业中,尤其是在Web开发领域,提供用户在线预览PDF、Word、Excel等文档的功能是一项常见且实用的需求。本文将详细讲解如何利用Java Web技术实现这样的功能,主要涉及Maven构建工具、前端PDF插件以及后台...
在"jni-jna-web"项目中,可能包含了使用JNI编写的本地方法,这些方法可能是为了提高特定操作的性能,或者调用了无法用纯Java实现的库函数。 JNI的关键步骤包括: 1. 定义本地方法:在Java类中声明native方法,不...
Java EE则主要用于开发Web应用程序和服务端应用程序;Java ME则针对嵌入式设备和移动设备。 #### 1.4 Java SE环境安装和配置 安装Java SE环境首先需要下载JDK(Java Development Kit),然后根据操作系统类型进行...
MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在MySQL数据库上执行CRUD(创建、读取、更新、删除)操作...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其性能强大且易于使用,广泛应用于Web应用程序、数据存储和分析等场景。MySQL的Java连接器(JDBC驱动)是连接Java应用程序与MySQL数据库的关键组件,它提供了...
Java Web服务应用开发详解涉及到许多核心技术和概念,这些技术涵盖了从服务器端编程到客户端交互的整个过程。在Java世界中,Web服务主要依赖于Servlet、JSP、JavaServer Faces(JSF)、Java EE(企业版)框架以及XML...