浏览器渲染页面的时候,遇到图片标签或者css中的背景图片设置,先会到本地缓存中寻找是否已经下载了这张图片,如果已经下载过了就直接从缓存中加载;否则会到图片指定的路径下载到本地缓存。而且这种下载是阻塞式的(部分浏览器内核已经实现异步加载图片。比如火狐)。也就是说在下载这些图片的时候,页面渲染处于暂停状态,必须等到图片下载完成了再继续渲染。
所以,如果一个页面中有大量的图片需要加载,先不说图片本身的大小对下载速度的消耗,每次图片下载都是一次http请求,都要经历3次协议握手,这对页面加载速度的影响是显而易见的!!如果图片再大一点,每张一两百K,杯具了……
那么如何管理这些页面图片、背景图片以加快页面渲染速度呢?下面,我将我的一些经验分享给大家。
一、页面图片处理
1.延迟加载
1)所需技术:
lazyload
2)原理:
- 先使用一种空白的图片grey.gif代替指定的图片元素(lazyLoad允许指定页面上那些图片需要延迟加载。比如$("img.lazy").lazyload()表示class为lazy的图片延迟加载。$("img ").lazyload()表示所有图片都延迟加载)。
- 当页面滚动条滚动到该图片时,再将图片的src还原。
有时,你可能浏览某些网页时,滚动页面滚动条时发现有些图片显示为正在加载。就是使用这种技术实现的。
3)使用:
<img src="test.jpg" alt=""/> jQuery(document).ready(function() { $("img").lazyload();//更多的配置请参考官网 });
注意:lazyload好处在于并不会影响页面元素的开发。你不需要在img标签上附加任何的配置。lazyLoad会自动将图片的src设置为空白图片 grey.gif。
2.异步加载
1) 原理:
异步加载跟延迟加载有点不一样。延迟加载是当滚动条滚动到图片位置时,重新加载图片;而异步加载就是页面加载完成后,将指定的图片重新加载。
跟延迟加载一样,需要将图片的src属性先指定为一张空白的图片。然后将图片本来的地址放入 lazyload 属性(属性名称可以自己定义)。页面加载完成后,使用javascript将图片的src属性替换为data属性的地址。这有点像是在模拟火狐浏览器异步加载图片的行为,呵呵。
2)范例:
<img src="grey.gif" alt="" lazyload="test.jpg"/>
注意:这里需要事先将src属性设置为grey.gif,并将真实的src放入lazyload属性。
下面使用javascript替换src:
jQuery(document).ready(function() { $("img:[lazyload]").each(function(){ $(this).attr("src",$(this).attr("lazyload")); }); });
二、背景图片处理
1.不需要平铺的背景图片
1)优化
- 将这些图片进行归类,icon的一类、button的一类、其他背景素材一类……
- 归类好后,将他们分别放入一张大的png背景图片中
- 需要使用背景的地方,通过css的background-position进行指定背景位置
2)范例
.bg1{background: url(/img/imgBg.png) no-repeat -100px -50px; overflow: hidden;}
2.需要平铺的背景图片
1)优化
- 将横向平铺的和纵向平铺的分别归类
- 将这些图片剪裁成等宽(横向平铺)、等高(纵向平铺)。最好宽度或者高度设为1px
- 将这些图片放入一张大的png图片中
- 使用css的background-position进行指定背景位置,并设置background-repeat为repeat-x或者repeat-y
2)范例
.bg2{background: url(/img/imgBg_repeatX.png) repeat-x 0px -50px;}
3.建议
1)优化
- 定义一组公共样式:bg、repeatXBg、repeatYBg,指定背景图片路径
- 在需要使用背景的css中直接指定background-position
2)范例
公共样式
.bg{background: url(/img/background/base.png) no-repeat left top; overflow: hidden;} .repeatXBg{background: url(/img/background/base_repeatX.png) repeat-x left top;} .repeatYBg{background: url(/img/background/base_repeatY.png) repeat-y left top;}
页面样式:
bg1{background-position: 0px -33px; } repeatXBg1{background-position: 0px -33px; } repeatYBg1{background-position: -33px 0px; }
html:
<div class="bg bg1"></div> <div class="repeatXBg repeatXBg1"></div> <div class="repeatYBg repeatYBg1"></div>
相关推荐
解决"jsp页面加载时提示loading"的问题需要从多方面进行排查和优化,包括页面内容优化、服务器性能提升、网络条件改善、代码错误检查、缓存策略调整、服务器配置优化、数据库性能优化、AJAX请求优化、JavaScript脚本...
综上所述,"页面加载中js"涉及了网页性能优化的多个方面,包括脚本的异步加载、延迟执行、资源预加载、事件监听、路由管理等策略。通过巧妙地运用这些技术,开发者可以创建出加载速度快、用户体验良好的现代Web应用...
页面加载是Web开发中的核心环节,它涉及到用户体验、性能优化以及功能实现等多个方面。当用户在浏览器中输入URL或点击链接后,浏览器开始执行一系列复杂的步骤来获取并展示网页内容,这一过程就是页面加载。本资源...
这种技术主要用于减少初始页面加载的时间,特别是对于那些大型网站和含有大量图片的页面。延迟加载的主要思想是,只有当用户滚动到特定元素时,才会开始加载这些元素。 二、JavaScript和jQuery的延迟加载 1. ...
"页面加载时提示正在加载中"这一功能,正是为了提升用户体验而设计的。当用户点击链接或提交表单时,页面加载的过程可能会消耗一些时间,特别是在处理大量数据或者进行复杂的计算时。这种等待可能会让用户感到不耐烦...
任何jsp页面只要使用包含附件中的loading.jsp将自动拥有“页面正在加载的。。”提示信息,在页面加载完后将自动隐藏。 我为什么使用这个组件? 1。交互性。 客户清楚知道,你的页面是在加载,需要等待,而不用...
3. **资源优先级管理**:通过判断哪些资源对用户体验最关键,优先加载这些内容,比如页面布局和主要功能,然后逐步加载非必需的图片或视频。 4. **骨架屏**:骨架屏是预加载的一种形式,它在内容实际加载前显示页面...
这种技术允许用户在滚动页面时,内容(如图片)会随着滚动条的移动而逐步加载,而不是一次性全部加载到浏览器中。这样做的主要目的是优化用户体验,尤其是当页面包含大量内容时,可以避免一次性加载所有资源导致的...
这种技术的原理是,当用户滚动页面到达图片区域时,图片才会被加载,而不是在页面初次加载时一次性加载所有图片。这样可以显著减少页面初次加载的时间,改善用户浏览体验。 在"js页面图片延迟加载特效.zip"中,主要...
预加载可以在后台加载用户可能需要的资源,而懒加载则是在用户滚动到相关内容时才开始加载,这两种方法都能有效减少首次加载页面时的等待时间。 总的来说,"正在加载效果图片"是网页设计中的一个重要元素,它关乎...
本话题将深入探讨"H5多种加载效果loading",即H5页面在加载过程中使用的炫酷动画,旨在提升用户在等待页面完全加载时的体验。 一、什么是H5加载效果 H5加载效果,也称为“loading”或“预加载”,是指在页面内容...
#### 二、HTTP优化:减少请求数与缓存策略 HTTP协议的优化对于提高页面加载速度至关重要。减少HTTP请求数是最基本的优化手段,通过合并CSS和JS文件,利用CSS Sprites技术整合图片,可以显著降低请求次数,加速页面...
页面加载是Web开发中的核心概念,它涉及到用户打开一个网页时浏览器如何获取、解析和显示内容的过程。在本文中,我们将深入探讨这个过程,并结合"源码"和"工具"这两个标签来理解如何优化和分析页面加载性能。 首先...
PreLoader: Make your activity launch faster changelog 中文文档 Pre-load data before Activity opens, and display data on UI after UI initialization....You can start a PreLoader everywhere and start to ...
但是,需要注意的是,`DocumentCompleted`并不总是意味着所有内容都已经加载完毕,特别是当页面中存在iframe或者其他外部资源(如图片、脚本)时,这些子资源的加载不会触发`DocumentCompleted`事件。 为了确保页面...
这个过程优化了用户体验,因为不是一次性加载整个页面,而是按需加载各个功能模块,尤其是当页面内容庞大或者包含多个交互功能时。 1. **组件化开发**: - 组件化是现代前端开发的核心技术之一,它允许开发者将...
7. **延迟加载(Lazy Loading)**:对于长页面,可以采用延迟加载技术,只在用户滚动到相应位置时才加载相应内容,这样可以减少初始加载时间并优化用户体验。 8. **错误处理**:如果加载失败,提示应当能够传达错误...
- **状态管理**:由于页面局部更新,需要确保DOM元素的正确插入和删除,同时处理好页面状态,如分页计数、加载指示器等。 - **错误处理**:处理Ajax请求失败的情况,提供友好的用户反馈。 - **SEO优化**:搜索引擎...
这个效果可以在页面内容完全加载之前,向用户展示一个“页面加载中,请稍后...”的提示,以提升用户体验,避免用户在等待过程中感到不耐烦。 首先,我们需要在HTML中创建一个“loading”提示的元素。通常我们会选择...
页面内容滚动加载是一种常见的网页优化技术,也被称为“无限滚动”或“滚动侦测加载”。这种技术允许网页在用户滚动到页面底部时自动加载更多内容,而不是一次性加载所有内容,从而提高了网页的加载速度和用户体验。...