`

[转载]管理好页面图片,减少页面加载时http连接,优化页面

阅读更多

点我查看原文

       浏览器渲染页面的时候,遇到图片标签或者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

    解决"jsp页面加载时提示loading"的问题需要从多方面进行排查和优化,包括页面内容优化、服务器性能提升、网络条件改善、代码错误检查、缓存策略调整、服务器配置优化、数据库性能优化、AJAX请求优化、JavaScript脚本...

    页面加载中js 页面加载中js 页面加载中js

    综上所述,"页面加载中js"涉及了网页性能优化的多个方面,包括脚本的异步加载、延迟执行、资源预加载、事件监听、路由管理等策略。通过巧妙地运用这些技术,开发者可以创建出加载速度快、用户体验良好的现代Web应用...

    页面加载时的验证

    页面加载是Web开发中的核心环节,它涉及到用户体验、性能优化以及功能实现等多个方面。当用户在浏览器中输入URL或点击链接后,浏览器开始执行一系列复杂的步骤来获取并展示网页内容,这一过程就是页面加载。本资源...

    JSP页面加载时提示"正在加载中"

    任何jsp页面只要使用包含附件中的loading.jsp将自动拥有“页面正在加载的。。”提示信息,在页面加载完后将自动隐藏。 我为什么使用这个组件? 1。交互性。 客户清楚知道,你的页面是在加载,需要等待,而不用...

    页面加载时 提示 正在加载中

    "页面加载时提示正在加载中"这一功能,正是为了提升用户体验而设计的。当用户点击链接或提交表单时,页面加载的过程可能会消耗一些时间,特别是在处理大量数据或者进行复杂的计算时。这种等待可能会让用户感到不耐烦...

    拖动滚动条自动加载图片页面

    这种技术允许用户在滚动页面时,内容(如图片)会随着滚动条的移动而逐步加载,而不是一次性全部加载到浏览器中。这样做的主要目的是优化用户体验,尤其是当页面包含大量内容时,可以避免一次性加载所有资源导致的...

    js页面图片延迟加载特效.zip

    这种技术的原理是,当用户滚动页面到达图片区域时,图片才会被加载,而不是在页面初次加载时一次性加载所有图片。这样可以显著减少页面初次加载的时间,改善用户浏览体验。 在"js页面图片延迟加载特效.zip"中,主要...

    H5多种加载效果loading,H5页面加载中动画

    本话题将深入探讨"H5多种加载效果loading",即H5页面在加载过程中使用的炫酷动画,旨在提升用户在等待页面完全加载时的体验。 一、什么是H5加载效果 H5加载效果,也称为“loading”或“预加载”,是指在页面内容...

    页面滚动到底部自动加载数据

    为了减少网络延迟,可以考虑使用浏览器缓存或服务端缓存策略,比如在用户首次加载数据时存储在本地,后续滚动加载时优先从本地读取,只有在缓存不足时才向服务器请求。 综上所述,实现“页面滚动到底部自动加载数据...

    浏览器的加载与页面性能优化

    #### 二、HTTP优化:减少请求数与缓存策略 HTTP协议的优化对于提高页面加载速度至关重要。减少HTTP请求数是最基本的优化手段,通过合并CSS和JS文件,利用CSS Sprites技术整合图片,可以显著降低请求次数,加速页面...

    页面加载

    页面加载是Web开发中的核心概念,它涉及到用户打开一个网页时浏览器如何获取、解析和显示内容的过程。在本文中,我们将深入探讨这个过程,并结合"源码"和"工具"这两个标签来理解如何优化和分析页面加载性能。 首先...

    Android代码-Android页面启动速度优化:在页面打开之前就预加载数据

    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 ...

    C#判断webbrowser页面最终加载完成

    但是,需要注意的是,`DocumentCompleted`并不总是意味着所有内容都已经加载完毕,特别是当页面中存在iframe或者其他外部资源(如图片、脚本)时,这些子资源的加载不会触发`DocumentCompleted`事件。 为了确保页面...

    magento图片延时加载插件

    Magento的图片延时加载插件实现了这一功能,通过智能地延迟非可视区域图片的加载,减少了页面的HTTP请求次数,从而提升了网站的加载速度。当用户向下滚动页面时,未被看到的图片会自动开始加载,这样既保证了用户...

    页面正在加载组件-2.0

    这个过程优化了用户体验,因为不是一次性加载整个页面,而是按需加载各个功能模块,尤其是当页面内容庞大或者包含多个交互功能时。 1. **组件化开发**: - 组件化是现代前端开发的核心技术之一,它允许开发者将...

    页面局部加载,适合Ajax Loading

    - **状态管理**:由于页面局部更新,需要确保DOM元素的正确插入和删除,同时处理好页面状态,如分页计数、加载指示器等。 - **错误处理**:处理Ajax请求失败的情况,提供友好的用户反馈。 - **SEO优化**:搜索引擎...

    js实现页面加载完毕之前loading提示效果

    这个效果可以在页面内容完全加载之前,向用户展示一个“页面加载中,请稍后...”的提示,以提升用户体验,避免用户在等待过程中感到不耐烦。 首先,我们需要在HTML中创建一个“loading”提示的元素。通常我们会选择...

    页面内容滚动加载

    页面内容滚动加载是一种常见的网页优化技术,也被称为“无限滚动”或“滚动侦测加载”。这种技术允许网页在用户滚动到页面底部时自动加载更多内容,而不是一次性加载所有内容,从而提高了网页的加载速度和用户体验。...

    JS即时加载,当用到图片时才加载,只加载当前屏幕的图片

    JavaScript(简称JS)即时加载是一种优化网页性能的技术,它的核心思想是延迟非当前视口内的资源加载,以减少网络带宽消耗,提升页面加载速度,改善用户体验。这种技术尤其适用于处理大量的图片资源,如在滚动长图...

    简单的图片懒加载实现

    图片懒加载是一种优化网页性能的技术,它通过延迟加载非可视区域内的图片,直到用户滚动页面使其进入可视区域时才开始加载。这种技术可以显著减少页面初始化时的数据传输量,提高页面加载速度,提升用户体验,特别是...

Global site tag (gtag.js) - Google Analytics