`

前端性能测试优化建议

阅读更多
为转帖:具体看地址http://blog.csdn.net/zhengsj/article/details/2691456
Yahoo提高网站性能34条最佳实践一
 
对于前台后台程序员 下面这些都应该是大家在工作要注意的


减少HTTP请求

80%的客户端响应时间耗费在前端上。而其中大部分的时间又用在下载所有页面中需要的资源:图片,样式表,脚本,Flash等等。依次减少渲染页面所需的资源和HTTP请求的数量。这是加速页面显示的关键。

一种减少资源数量的方法是简化页面的设计(- - ||真是个好主意)。但有没有方法在获取快速响应的前提下有一个丰富内容的页面呢?这里有一些能够在不减少页面内容的前提下减少HTTP请求数的技术。

合并文件是一种通过把所有脚本合并到一个脚本中来达到减少HTTP请求数目地的方法,同样也适用于CSS。在不同页面需要不同脚本和样式表的情况下要合并文件显的更为困难,但是把这个做为你发布工程的一部分来改善响应时间。

CSS Sprites是一个很好的减少图片请求数的技巧。把你的背景图合并到一张图片中,使用CSS的background-image和background-position属性去显示需要的部分。

Image maps把多张图片合并到一张图片上。整体的尺寸几乎相同,但是因为减少了HTTP请求数而加速了页面的显示。Image maps仅仅在连续使用的图片下才能起作用,如导航条。制定image maps的坐标是一件枯燥,容易出错的工作。使用image maps的导航条也不易于访问,所以这个不被推荐。

Inline images 使用data: URL scheme来将图片数据嵌入到实际页面中。这样做会增加HTML文档的体积。把inline images合并到你的样式表中能够在避免页面体积增大的前提下减少HTTP请求。Inline images目前还被所有主流浏览器支持。

为你的页面减少HTTP请求数是第一步。这是改善初次访客体验的最重要的原则。正如Tenni Theurer的博客文章Browser Cache Usage - Exposed!中描述的那样,40-60%的网站日常访客都是以一个空缓存的状态进入的。因此为那些初次访客(事实上是空缓存用户)优化是获得一个良好用户体验的关键。


使用CDN(Content Delivery Network)

    用户与你网站服务器的接近程度会影响响应时间的长短。把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。但是首先我们应该做些什么呢?

      按地域布置网站内容的第一步并不是要尝试重新架构你的网站让他们在分发服务器上正常运行。根据应用的需求来改变网站结构,这可能会包括一些比较复杂的任务,如在服务器间同步Session状态和合并数据库更新等。要想缩短用户和内容服务器的距离,这些架构步骤可能是不可避免的。

      要记住,在终端用户的响应时间中有80%到90%的响应时间用于下载图像、样式表、脚本、Flash等页面内容。这就是网站性能黄金守则。和重新设计你的应用程序架构这样比较困难的任务相比,首先来分布静态内容会更好一点。这不仅会缩短响应时间,而且对于内容分发网络来说它更容易实现。

      内容分发网络(Content Delivery Network,CDN)是由一系列分散到各个不同地理位置上的Web服务器组成的,它提高了网站内容的传输速度。用于向用户传输内容的服务器主要是根据和用户在网络上的靠近程度来指定的。例如,拥有最少网络跳数(network hops)和响应速度最快的服务器会被选定。

      一些大型的网络公司拥有自己的CDN,但是使用像Akamai Technologies,Mirror Image Internet, 或者Limelight Networks这样的CDN服务成本却非常高。对于刚刚起步的企业和个人网站来说,可能没有使用CDN的成本预算,但是随着目标用户群的不断扩大和更加全球化,CDN就是实现快速响应所必需的了。以Yahoo来说,他们转移到CDN上的网站程序静态内容节省了终端用户20%以上的响应时间。使用CDN是一个只需要相对简单地修改代码实现显著改善网站访问速度的方法。


添加一个Expire或者缓存控制的头部

在这个规则中有两个要点:

对于静态的资源:通过设置超长的过期头部实行“永不过期”策略

对于动态的资源:使用一个合适的缓存控制头部来帮助浏览器处理有条件的请求。


网页设计得越来越丰富多彩,这意味着更多的脚本,样式表,图片和Flash存在于网页上。一个网页的初次访客需要发送一些 HTTP请求,通过设置过期头部你可以缓存这些资源。从而在用户访问接下来的页面时避免了不必要的HTTP请求。过期头部常用于图片,实际上应该对所有资源应用过期头部包括脚本,样式表和Flash等。


浏览器(和代理)使用一个缓存来减少HTTP请求的数量和尺寸,使得网页加载得更快。一个服务器在HTTP响应中使用过期头部来告诉客户端一个资源能够被缓存多久。下面是一个超长的过期头部,告诉浏览器这个资源在2010年4月15前不会过期。

Expires: Thu, 15 Apr 2010 20:00:00 GMT

如果你服务器是Apache,使用ExiresDefault设置一个过期时间。这是一个把过期时间设置到10年以后的例子。

ExpiresDefault “access plus 10 years”

记得,如果你使用一个超长的过期头部,你如果想改动资源就必须改资源的名称。在Yahoo!我们常常把这个做为发布过程中的一部分:一个版本号被做为资源名称的组成部分,例如,yahoo_2.0.6.js

使用一个超长的过期头部只在用户已经访问你的网站以后产生影响。当一个初次访问,空缓存的用户来到你的网站时它是不起作用的。


把资源Gzip

网络传输中的HTTP请求和应答时间可以通过前端机制得到显著改善。的确,终端用户的带宽、互联网提供者、与对等交换点的靠近程度等都不是网站开发者所能决定的。但是还有其他因素影响着响应时间。通过减小HTTP响应的大小可以节省HTTP响应时间。

      从HTTP/1.1开始,web客户端都默认支持HTTP请求中有Accept-Encoding文件头的压缩格式:  

      Accept-Encoding: gzip, deflate

      如果web服务器在请求的文件头中检测到上面的代码,就会以客户端列出的方式压缩响应内容。Web服务器把压缩方式通过响应文件头中的Content-Encoding来返回给浏览器。

      Content-Encoding: gzip

      Gzip是目前最流行也是最有效的压缩方式。这是由GNU项目开发并通过RFC 1952来标准化的。另外仅有的一个压缩格式是deflate,但是它的使用范围有限效果也稍稍逊色。

      Gzip大概可以减少70%的响应规模。目前大约有90%通过浏览器传输的互联网交换支持gzip格式。如果你使用的是Apache,gzip模块配置和你的版本有关:Apache 1.3使用mod_zip,而Apache 2.x使用moflate。

      浏览器和代理都会存在这样的问题:浏览器期望收到的和实际接收到的内容会存在不匹配的现象。幸好,这种特殊情况随着旧式浏览器使用量的减少在减少。Apache模块会通过自动添加适当的Vary响应文件头来避免这种状况的出现。

      服务器根据文件类型来选择需要进行gzip压缩的文件,但是这过于限制了可压缩的文件。大多数web服务器会压缩HTML文档。对脚本和样式表进行压缩同样也是值得做的事情,但是很多web服务器都没有这个功能。实际上,压缩任何一个文本类型的响应,包括XML和JSON,都值得的。图像和PDF文件由于已经压缩过了所以不能再进行gzip压缩。如果试图gizp压缩这些文件的话不但会浪费CPU资源还会增加文件的大小。

      Gzip压缩所有可能的文件类型是减少文件体积增加用户体验的简单方法。

把样式表放在顶端

在研究Yahoo!的性能表现时,我们发现把样式表放到文档的<head />内部似乎会加快页面的下载速度。这是因为把样式表放到<head />内会使页面有步骤的加载显示。

      注重性能的前端服务器往往希望页面有秩序地加载。同时,我们也希望浏览器把已经接收到内容尽可能显示出来。这对于拥有较多内容的页面和网速较慢的用户来说特别重要。向用户返回可视化的反馈,比如进程指针,已经有了较好的研究并形成了正式文档。在我们的研究中HTML页面就是进程指针。当浏览器有序地加载文件头、导航栏、顶部的logo等对于等待页面加载的用户来说都可以作为可视化的反馈。这从整体上改善了用户体验。

      把样式表放在文档底部的问题是在包括Internet Explorer在内的很多浏览器中这会中止内容的有序呈现。浏览器中止呈现是为了避免样式改变引起的页面元素重绘。用户不得不面对一个空白页面。

      HTML规范清楚指出样式表要放包含在页面的<head />区域内:“和<a />不同,<link />只能出现在文档的<head />区域内,尽管它可以多次使用它”。无论是引起白屏还是出现没有样式化的内容都不值得去尝试。最好的方案就是按照HTML规范在文档<head />内加载你的样式表。

分享到:
评论

相关推荐

    前端性能优化与实践.zip

    "前端性能优化与实践.zip"这个压缩包包含了一系列关于前端性能优化的深度文章和教程,涵盖了浏览器缓存机制、首屏加载优化、服务端渲染、事件处理策略、图片优化、性能监测工具以及CDN的工作原理等多个方面。...

    WEB前端性能优化测试

    的前端性能最佳实践规则对网页进行评分,并提供优化建议。它分析网页并提供关于如何改进性能的报告,包括合并文件、压缩资源、减少DNS查找等方面的建议。 了解和应用这些优化策略,并结合YSLOW等工具进行测试和评估...

    web前端性能优化

    针对web前端性能低下的问题,王成、李少元、郑黎晓、缑锦、曾梅琴、刘慧敏等学者系统地提出了一套旨在提高网页加载速度、呈现速度和用户体验的完整Web前端性能优化解决方案。该方案涵盖了服务器端优化、HTML优化、...

    前端开发经验沉淀 前端性能优化及开发工具 共25页.ppt

    前端性能优化及开发工具 前端性能优化是指在前端开发过程中,对Web应用程序的性能进行优化,以提高用户体验和页面加载速度。本文将介绍前端性能优化的经验沉淀,包括机票双程性能优化和开发工具的使用。 一、前端...

    web前端性能测试

    在IT行业的领域内,"web前端性能测试"是一项至关重要的技术环节,它直接影响着用户的体验质量和网站的整体性能表现。从给定的文件信息来看,我们可以深入探讨以下几点关键知识点: ### 1. 前端性能测试的目的 前端...

    前端 - 郭碧青《Web 前端性能优化思路与学习方法》.pdf

    郭碧青是腾讯公司的一位资深前端工程师,他在Web前端性能优化方面有着丰富的实践经验,并且对于性能优化的工作充满热情。郭碧青在行业内的知名度很高,虽然行事低调,但是经常受邀在各种大型会议和技术活动中分享...

    Web 前端性能优化思路与学习方法

    Web前端性能优化是提升网页用户体验和确保网站成功的关键因素之一。性能优化涉及多个方面,包括但不限于代码优化、资源加载策略、服务器配置等。本篇内容将深入探讨Web前端性能优化的思路与学习方法,结合WebQQ、QQ...

    Qzone前端CPU性能优化

    这一转变不仅提升了页面渲染速度,也降低了CPU负担,是Qzone前端性能优化的一个缩影。 ### 优化案例:Flash挂件的去除 作为优化实践的一部分,郭润增还提到了Flash挂件的影响。虽然Flash挂件曾为Qzone带来了丰富的...

    DevCloud前端性能优化Devops实践.pptx

    本文将从多个方面介绍前端性能优化的技术和实践,包括代码优化、资源加载优化、缓存优化、图片优化、接口优化等。 代码优化 删除无用(冗余)的代码是前端性能优化的重要步骤。可以使用工具如 PageSpeed、...

    大型网站性能优化实战从前端网络CDN到后端大促的全链路性能优化 带书签完整版

    - **3.1.2 使用PageSpeed进行性能分析**:PageSpeed Insights是由Google提供的在线工具,用于分析网页的性能,并提供优化建议。 - **3.1.3 使用WebPageTest进行性能分析**:WebPageTest是一个开源的网站性能测试工具...

    yslow前端性能测试工具

    **yslow前端性能测试工具详解** yslow是Yahoo!开发的一款强大的前端性能分析工具,它通过对网页进行评估,提供优化建议,帮助开发者提高网站的加载速度和用户体验。yslow的核心理念是遵循YSlow规则,这是一套基于...

    前端性能测试工具-Lighthouse (灯塔)插件

    **前端性能测试工具——Lighthouse (灯塔)插件** Lighthouse 是一款开源的自动化工具,主要用于提升网页的性能和可访问性。它由Google开发并维护,作为一个Chrome浏览器的扩展,可以方便地对任何网站进行性能评估和...

    DevCloud前端性能优化DevOps实践共25页.pd

    【标题】"DevCloud前端性能优化DevOps实践共25页.pd" 指的是一份关于DevCloud平台在前端性能优化与DevOps实践的详细文档,共有25页内容。这份文档很可能是针对开发人员和团队,分享了如何在DevCloud环境下提升前端...

    前端性能优化方法与实战

    │ 07 平台实践:如何从 0 到 1 搭建前端性能平台.md │ 08 诊断清单:如何实现监控预警并进行问题诊断.md │ 09 优化手段:首屏秒开的 4 重保障.md │ 10 优化手段:白屏 300m 和界面流畅优化技巧.md │ 11 工具...

    基于puppeteer的前端性能测试解决方案.docx

    基于Puppeteer的前端性能测试是一种自动化的方法,用于评估和优化Web应用程序的性能。Puppeteer是一个由Google Chrome团队开发的Node库,它提供了一组高级API来控制Headless Chrome或Chromium浏览器,使得开发者能够...

    vue前端性能优化02

    "vue前端性能优化02"这个主题可能涵盖了多个方面的优化策略,我们将会深入探讨这些关键点。 首先,我们要理解Vue.js的核心原理,它采用数据绑定和组件化思想,通过Virtual DOM实现高效的页面更新。然而,随着应用...

    前端测试工具调研报告

    为了确保提供最佳用户体验,开发团队需要借助各种前端性能测试工具来评估和优化网站性能。然而,不同的测试工具可能会给出不同的测试结果,这给选择合适的测试工具带来了挑战。本文旨在通过对比分析常见的前端性能...

    前端性能优化:图片优化.zip

    史上最全web前端技术全套教程,包括: 前端API集成 前端基础知识 前端开发最佳实践 前端性能优化 前端构建工具 前端框架和库 前端测试工具 前端状态管理 等流行技术的系列教程

Global site tag (gtag.js) - Google Analytics