`
xinlanzero
  • 浏览: 251968 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用瀑布图初步诊断网站性能瓶颈..

阅读更多

核心提示: 一般来说,打开一个网页的速度会受到以下几项的影响:1) 服务器花了太长的时间将动态页面的内容转化为html。2) 动态页面花了太长的时间从服务器端将内容发送到客户端。3) 页面上

<!--新闻正文-->

 一般来说,打开一个网页的速度会受到以下几项的影响:

 

1) 服务器花了太长的时间将动态页面的内容转化为html。

2) 动态页面花了太长的时间从服务器端将内容发送到客户端。

3) 页面上的图片或者flash文件花了太长的时间从服务器端发送到客户端。

4) JavaScript和CSS文件阻塞页面渲染。

我们可以使用“瀑布图”来确定一个页面的性能问题是由于哪一项造成的。FireBug、Chrome自带的“开发人员工具”都可以生成“瀑布图”。FireBug与Chrome (9.0或以上版本)通过“网络(Network)”选项卡查看“瀑布图”。下面是通过www.eol.cn,chrome自带的"开发工具'生成的瀑布图。

图1 瀑布图

图中每一行表示一个Http请求,每一个请求都有一条时间线,用于表示这个请求所花费的时间。如果将鼠标放到某一条时间线上,可以看到以下信息:

图2 时间线

网站访问的布骤是:  域名解析-》 建立连接--》发送请求-》等待响应-》 接收数据

有了这些信息,我们就能初步诊断网站的性能瓶颈。

1)首先看一下哪个请求花费的时间比较长,看看这个请求的时间线信息,确定是服务器响应慢了还是网络的问题。

2)如果每个请求所花费的时间都没有明显高于其他,那么就看一下是不是页面的Http请求总数太多了。因为浏览器对单个域名的并发连接数是有限制的,需要处理完一批请求再发送另一批请求。假设页面有100个请求,每个请求花费1s,浏览器最大并发数限制为10个,那么处理完所为请求就需要100/10*1s=10s的时间。

关于最大并发数,Http1.1的标准是2,而目前主流的浏览器IE、FireFox、Chrome为了提高速度,分别修改为10、6、6(根据具体版本可能有所变化)。

2、 各种性能瓶颈及其对策

前端性能问题

雅虎专门研究网页性能问题的工程师发现,一个页面从请求到加载完,80%的时间都花在前端上。事实也是如此,以图一为例,整个页面完全加载完花费了12s的时间,而服务器的响应时间只有391ms,其他时间都花在获取页面静态文件(如JS、CSS、图片等文件)上了。所以优化一个网站首先应从前端性能优化下手。

对策1:使用多域名增加最大并发数

仔细分析图一中的“域”,可以发现“tp1.sinaimg.cn”、“tp3.sinaimg.cn”这样的域名。这样做可以成倍的增加并发数。因为浏览器只对单个域名限制并发数,而不对单个IP限制并发数,所以可将一个IP地址映射到多个域名,然后使用这些域名访问网站资源,这样原本浏览器的并发数为6,使用两个域名并发数就可以达到12个了。但需要注意的是,域名并不是越多就越好的,因为域名解析也需要花费时间,而且并发数太多也会耗费客户端太多的CPU,域名数量到了一定程度,网页性能就会开始下降,所以在应用中需要根据实际情况寻找一个平衡点。如果不是特别需要,一般2到4个为佳。

对策2:通过文件压缩等方式降低单个文件的大小

对于JS文件,可以通过工具对其进行压缩,去除不必要的空格、换行符等。对于图片文件,优先考虑使用CSS来代替,实在不行可以考虑对图片进行裁剪。对于页面文件,尽可能使用Html标签而不使用服务器控件以减少ViewState长度,将内联的javascript和CSS放到单独的文件中,尽可能使用长度较小的字符串来作为控件ID值。

对策3:合并JS和CSS文件减少并发数

如果将两个JS文件合并不至于对项目维护造成影响,那么最好将它们合并。

对策4:使用图片延迟加载技术减少并发数

所谓图片延迟加载,就是每次只加载当前屏幕可见区域的图片,其余的图片在用户滚动页 面到该位置后才开始加载。这是一项非常实用的技术,减少了并发数,不但减少了服务器的压力,也降低了页面的加载时间,目前很多门户网站都使用了该技术,如 腾讯微博的“看看推荐的人”页面,在该页面上有几千个头像,如果一次性加载全部的图片,就要耗费比较多的客户端和服务器端的资源。该功能的实现原理很简 单,就是将页面上的src替换成其他标记(如original),在页面滚动到相应位置后,再将original更改为src。目前有个Jquery插件Jquery.LazyLoad.js可以实现图片的延迟加载,使用方法如下所示:

1 jQuery(document).ready(
2 function($){
3 $("img").lazyload({
4      placeholder : grey.gif //代替原图片
5      effect      : "fadeIn"
6 });
7 });

 

不过该插件并没有真正的减少图片延迟加载,因为执行js是在页面的page_load之后,所以实际上打开页面后,图片已经全部下载到客户端,只是因为src属性被替换成original而没有显示起来。针对这种情况,网上有人提供了解决方案:将aspx页面上的src替换成original,这样保证page_load时绝对不会请求图片文件,然后Jquery.LazyLoad.js文件第62行的代码$(self).attr("original", $(self).attr("src"));修改为$(self).attr("original", $(self).attr("original"));

服务器端性能问题

影响服务器端的性能是多方面的,包括软件架构、服务器硬件配置等等各方面,如果编码的时候多注意一下,也能够给性能提升带来帮助。下面仅摘取几条记录如下:

1) 尽量使用List而不使用DataSet。

2) 使用替代,因为Eval需通过反射识别field的类型,再进行数据转换,从而影响效率。

3) 涉及到字符串连接,使用StringBuilder类型,但是如果字符串连接操作发生在一个语句上,则不要使用StringBuilder。如:s = s1 + s2 + s3 + s4。

分享到:
评论

相关推荐

    HTML5图片瀑布流带筛选功能代码.rar

    HTML5图片瀑布流带筛选功能代码.rar HTML5图片瀑布流带筛选功能代码.rar HTML5图片瀑布流带筛选功能代码.rar HTML5图片瀑布流带筛选功能代码.rar HTML5图片瀑布流带筛选功能代码.rar HTML5图片瀑布流带筛选功能代码....

    技巧87瀑布图共12页.pdf.zip

    10. **总结与建议**:总结瀑布图的重要性和适用场景,提供使用瀑布图的建议,鼓励读者在合适的业务场景中尝试使用。 通过对这份12页的教程或案例研究的详细阅读和实践,你将能够熟练掌握瀑布图的制作技巧,将其应用...

    瀑布流图片展示站PHP源码.rar

    9. **images**:这个目录显然包含了网站使用的图像资源,如图片、图标等,它们是瀑布流展示中的主要内容。 从标签"网站模板"来看,这个源码提供了一个完整的图片展示网站框架,适合那些想要快速搭建此类站点的...

    黑色大气精美瀑布流图片展示网站模板5129.zip

    【标题】:“黑色大气精美瀑布流图片展示网站模板5129.zip”是一个网页设计资源,其中包含了一套精心制作的、以黑色为主调的图片展示网站模板。这个模板采用了瀑布流布局,这是一种流行的设计风格,能够让用户在浏览...

    瀑布流图文 version 2.0 成熟版.zip

    瀑布流布局,又称Masonry布局,是一种常见的网页设计布局方式,尤其在图片展示类网站中广泛应用。这种布局方式模仿了瀑布流水的自然形态,使得页面中的元素能够自适应地排列,形成一种错落有致、视觉效果独特的展示...

    jQuery实现的瀑布流布局的图片特效代码.rar

    jQuery实现的瀑布流布局的图片特效代码.rarjQuery实现的瀑布流布局的图片特效代码.rarjQuery实现的瀑布流布局的图片特效代码.rarjQuery实现的瀑布流布局的图片特效代码.rarjQuery实现的瀑布流布局的图片特效代码....

    手机响应式瀑布流相册图库网站模板8900.zip

    瀑布流布局(Masonry Layout)源自于Pinterest网站的设计,它打破了传统的网格布局,图片不再受限于固定的宽高比,而是自适应地填充可用空间,这样可以在有限的屏幕空间内展示更多的内容。这种布局方式在视觉上创造...

    EXCEL报表-4 动态可视化瀑布图(财务分析)1.xlsx

    EXCEL报表-4 动态可视化瀑布图(财务分析)1.xlsx

    我的瀑布流......zip

    综上所述,"我的瀑布流"项目可能包含了使用CSS3布局技术(如Flexbox或Grid)或JavaScript库实现的图片瀑布流示例。通过解压文件,你可以学习到如何构建一个自适应、高性能的图片展示界面,这对于提升网页设计和前端...

    jQuery瀑布流图片预加载展示代码.zip

    《jQuery瀑布流图片预加载展示代码详解》 在网页设计中,瀑布流布局因其独特的视觉效果和用户体验,已经成为一种常见的展示方式,尤其在图片展示领域更是广泛应用。本篇文章将深入探讨一个基于modernizr.js实现的...

    安卓瀑布流相关-waterfall瀑布流.zip

    瀑布流布局,也称为瀑布流式布局或无限滚动布局,是一种常见的网页和移动应用界面设计方式,尤其在图片展示和电商应用中广泛使用。这种布局方式最初由Pinterest网站引入,其特点是页面元素(如图片)按照网格排列,...

    jQuery实现简单图片瀑布流布局分类筛选特效源码.zip

    图片瀑布流布局和分类筛选功能是现代网站设计中的常见元素,尤其在展示大量图片内容时,这种布局方式能够有效地节省空间,提升用户体验。本文将深入探讨如何使用jQuery来实现这样的效果,主要围绕"jQuery实现简单...

    主要实现了使用瀑布流插件滚动图片.zip

    瀑布流布局,也被称为Masonry布局,是一种网页布局方式,常用于图片展示,尤其是像Pinterest这样的社交...通过研究这个项目,开发者可以了解瀑布流布局的工作原理,以及如何优化图片加载和布局计算,从而提高网页性能。

    HTML5图片瀑布流带筛选功能代码.zip

    HTML5图片瀑布流是一种流行的网页布局方式,常用于展示大量图片,如摄影网站、社交媒体或者电商产品页面。这种布局能够自适应不同的屏幕尺寸,使图片以瀑布式逐个下落,形成美观且易于浏览的效果。在给定的"HTML5...

    黑色简单图片瀑布流布局bootstrap模板_黑色.rar

    标题中的“黑色简单图片瀑布流布局bootstrap模板_黑色.rar”表明这是一个基于Bootstrap框架设计的网页模板,主题为黑色,特别适合用于展示图片,采用了瀑布流布局。这种布局方式能够适应不同屏幕尺寸,提供良好的...

    绿色照片瀑布流社区纯静态html模板.zip

    这种布局方式使得页面中的内容能够像瀑布一样自然地流淌下来,适应不同屏幕尺寸,尤其适用于展示图像丰富的网站,如照片分享社区。 描述 "绿色照片瀑布流社区纯静态html模板.zip" 强调了模板的两个关键特点:一是...

    瀑布图片墙.zip

    瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在图片展示类网站中非常流行,如Pinterest、嘀咕网等。这种布局的特点是图片会像瀑布一样自上而下流动,每行图片的左边缘对齐,图片的高度根据自身内容...

    PHP实例开发源码-wordpress瀑布流主题:Mumale v3.0.zip

    PHP实例开发源码—wordpress瀑布流主题:Mumale v3.0.zip PHP实例开发源码—wordpress瀑布流主题:Mumale v3.0.zip PHP实例开发源码—wordpress瀑布流主题:Mumale v3.0.zip

    基于Jquery可居中显示并兼容IE6+/FF等浏览器的瀑布流程序(jquery.easing.js,jquery.vgrid.js实现)

    瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在图片展示、商品陈列等场景下广泛应用。这种布局的特点是元素随着页面滚动而垂直排列,每个元素的宽度不固定,但高度会自动调整,形成一种类似瀑布...

Global site tag (gtag.js) - Google Analytics