JS优化功能详解
* 首屏尽量不要出现JS文件
* 支持并行下载
* JS文件不宜过大
* 精简 JS代码
* JS文件不宜过多
* 用gzip 压缩JS文件
首屏尽量不要出现JS文件
用户打开页面时,首先看到就是首屏的内容,因此首屏能否快速显示,直接影响到用户体验的好坏。
JS文件的下载与解析会阻塞其它请求的下载(支持并行下载的JS除外)。 如果把JS放到首屏中,将降低首屏性能。
因此,我们建议把JS文件放到首屏之后。而一般来说,这也是可以做到的,如果有非要在首屏中出现的JS代码, 那么我们建议把这部分JS代码做为内联代码放到html文档中。
支持并行下载
在传统浏览器中(firefox-3.1b及以上版本例外),下载JS文件会阻塞后面文件的下载,这时浏览器会由并行下载变成串行下载。 因此如何让JS文件与其它文件并行下载便变得很有意义。这里有6种方法可以使JS文件与其他资源并行下载:
* XHR eval -- 通过XHR(XMLHttpRequest对象)下载script,然后用eval方法执行XHR的responseText。
* XHR Injection -- 通过XHR下载script,然后建立一个script标签并把它插入文档中(body或者head标签内),接着把script标签的text属性设置为XHR的responseText的值。
* XHR in Iframe -- 把script标签放到一个iframe里,通过iframe下载它。
* Script DOM Element -- 创建script标签并把它的src属性指向你的脚本地址。
* Script Defer -- 添加script标签的defer属性,这个在ie和firefox3.1中有效。
* 使用document.write方法在页面中写入<script src="">,这个只在ie里有效。
本规则将检查所有不能并行下载的JS文件,并给出警告。注意:如果某个JS请求是页面中的最后一个请求, 那么该JS文件将同样被视为可并行的,原因是把JS文件放到页面末尾,同样不会阻塞其它请求下载,起到的作用其实跟并行JS是一样的。
JS文件不宜过大
JS文件下载会阻塞其它请求的下载(支持并行下载的JS除外), 过大的JS文件则会进一步加剧这种阻塞,同时也会对浏览器的解析效率造成很大的影响。
因此我们建议精简js代码,去掉不需要的库代码及无用函数,并让JS文件支持并行下载。
这里我们的标准是JS文件压缩前不要超过30KB,超过30KB将被认定为过大。
精简JS代码
精简JS代码是指除去不必要的字节,比如多余的空格、换行、缩进以及注释等等。精简JS代码不仅可以节约流量,加快代码下载,还能加快浏览器的加载和执行。
下面是三个常用的精简JS代码的工具
* Closure Compiler
* JSMin
* YUI Compressor
JS文件不多于8个
前面在JS文件不宜过大中说过, 我们建议将过大的JS文件拆分到多个可支持并行下载的较小的文件中, 然而如果JS文件过多,将会产生过多的RTT(Round-Trip Time,往返时延),也会影响页面性能。
好的开发者在设计Web程序的时候都注重模块化和可重用性,将不同模块的代码放入不同的文件中在软件工程的角度来讲毫无疑问是非常好的选择。 但是这种做法将大大增加页面加载的时间。 首先,对于没有cache的浏览器来讲,浏览器需要对每一个JS文件发出一个HTTP请求,一次HTTP请求就会增加一次往返时间。其次,大部分的浏览器 在JS(支持并行下载的JS除外)加载和解析的过程中,会阻止页面其它部分的加载。
然而在实际的web开发中,也有其它的因素会决定最终JS文件的个数。首先,对那些不需要在页面加载时就执行的JS,可以让其支持并行下载和进行延迟加载。 其次,部分代码需要经常进行更新,维护多个版本,在这种情况下通常需要将这部分代码独立出来。最后,可能有一些JS文件是放在你不能控制的域名中, 比如广告、数据统计、用户跟踪等。
用gzip压缩JS文件
大部分的现在浏览器都支持对HTML代码、CSS、Javascript的压缩,这就允许数据在传送过程中使用更加紧凑的方式,从而明显地减少下载的时间。
建议用gzip压缩JS文件。使用gzip压缩JS文件可以减少约2/3的网络传输。
本规则将检查没有采用gzip压缩的JS文件。
CSS优化功能详解
* CSS文件不宜过大
* 没有多余CSS代码
* 最多只有一个CSS文件
* 用 gzip压缩CSS文件
* 避免使用CSS表达式
* 把CSS放到 head中
CSS文件不宜过大
一般页面的样式表代码不可能太大,我们的建议是CSS文件压缩前不要超过20K。如果超过20K,请查看规则没有多余CSS代码,检查是否有多余的CSS代码。
没有多余CSS代码
该规则将在所有内联(inline)CSS代码和外部CSS文件中找出没有被当前页面用到的样式块。
最多只有一个CSS文件
我们认为一个页面中的CSS代码完全可以放到一个文件中。如果CSS文件多于一个,请合并到一个文件中。
用gzip压缩CSS文件
建议用gzip压缩CSS文件。使用gzip压缩CSS文件可以减少约2/3的网络传输。
避免使用CSS表达式
CSS表达式只能应用于IE5~IE7浏览器中,其它浏览器都不支持CSS表达式。 使用CSS表达式会降低浏览器的渲染速度,用其它方式来代替CSS表达式将提高IE的渲染速度。
把CSS放到head中
把内联的CSS代码和<link>元素(外部CSS文件)从body中移到head中将提升渲染性能,这是因为:
* 首先,浏览器将阻塞直到所有的外部CSS文件下载完后才开始渲染。
* 其次,内联的CSS代码可能会使内容重新渲染,导致内容产生“漂移”或“闪烁”。
因此,把<link>和<style>标签都放到head中便变得有意义,不仅可以避免以上问题,还可以使到浏览器对页面进行逐步渲染。
图片优化功能详解
* 指定图片尺寸
* 最小化图片
* 小图片请求不应过多
* 控制图片数量
* 图片文件不宜过大
* 图片至少来自 2个域名
指定图片尺寸
图片是一种可代替的页面元素,浏览器可以在图片下载完成之前就开始渲染页面,前提是它知道图片的尺寸, 这样才能为周围那些不可代替的页面元素布局。如果图片没有指定尺寸,或者指定尺寸与真实图片不符合, 那么在图片下载完成之后,浏览器将需要重新布局和重绘。所以,为了避免重复重复渲染,需要为页面中所有图片指定高度和宽度。
最小化图片
一般图片制作完成后,可能会包含多余的信息。页面中的图片也可能出现真实尺寸大于页面中的指定尺寸(这时图片其实被扭曲了)。
本规则将对以上2种情况进行优化:
* 压缩图片,在不影响图片质量的前提下,对图片进行最小化压缩。
* 检查图片真实尺寸是否与页面中指定的尺寸一致。
小图片请求不应过多
页面请求过多将延长用户下载页面的时间。对于多个小图片请求,可以通过Image Maps或CSS Sprites等技术来合并图片, 并且如果小图片数量很多,建议采用分屏合并的方法,按先后屏的顺序合并,若干屏合成一个图, 这样既通过小图片合并减少了页面请求数,又不会产生过大的图片而影响到首屏的性能。
在本规则是针对首屏的,小于5K的图片将被认为是小图片。如果首屏中小图片数超过20个将会被认为过多。
控制图片数量
过多的图片请求将延长用户下载页面的时间。本规则将进行以下3个方面的检查:
* 图片总数是否过多。这里将根据页面高度来评判图片数量,如果图片数大于20+6h/800,其中h为页面高度,将认为过多。
* 来自mat和img域名的图片是否过多。
* 小图片是否过多
图片文件不宜过大
本规则将针对一般网页上的图片进行检查(本规则不适用于评判高清大图),主要有以下3个方面:
* 50K以上的图片都将认为过大。
* 15K~50K的图片,如果图片面积(即宽像素 x 高像素)小于(图片文件大小 * 1.25),将认为该图片过大。
* 10K~15K的图片,如果图片面积小于11440(130 x 88,这个值取自“积木标准项目-图片规范.doc”中10K图片文件的最小面积),将认为该图片过大。
图片至少来自2个域名
图片一般分为素材图片和内容图片两种,这两种图片分别来自不同的域名。因此如果发现所有图片只来自同一个域名,则可能某些图片放错了域名。
服务器端优化功能详解
* 设置浏览器缓存
* 相同的资源从同一URL获取
* 减少 DNS查找
* 把静态资源放到无cookie的域名中
* 避免重定向
* 避免 404错误
* 减少 cookie大小
设置浏览器缓存
为静态资源设置缓存可以让浏览器下次访问该页面时直接从本地磁盘直接获取页面资源。页面中的JS、 CSS、图片、flash等都视为可缓存资源。
本规则将检查以下几种情况:
* 没有指定缓存时间的可缓存资源。
* 头部用Vary头。IE会禁止缓存任何使用了Vary头部的资源,因此要避免使用Vary头部。
* 指定的缓存时间不够长。一般图片和flash指定一年以上的缓存时间,CSS和JS文件指定一周以上的缓存时间。
* URL冲突。在Firefox中,磁盘缓存所用的哈希函数对于相差很小的URL会产生冲突。
相同的资源从同一URL获取
本规则检查页面中是否有重复资源:即两个资源,内容一样,但是URL不同。
减少DNS查找
本规则将检查以下2种情况:
* 对于整个head及body的前10%中出现的script标签,如果这些标签的域名跟页面URL的域名不同,则认为违法规则。 理由是出现在前部(这里限定为整个head及body的前10%)的JS请求本来就会阻塞后面请求的下载(除非采用了JS文件可并行下载的方法), 如果这些JS文件的URL跟页面URL不同,则为了获取这些JS文件还需再这之前进行DNS查找。这将会对页面的逐步渲染造成较大影响。
* 对于只存放了一个资源的域名,也会进行提示,原因是一般是可以做到一个域名存放多个资源的, 如果一个域名只存放一个资源,则引起的DNS查找就显得过于浪费了。
把静态资源放到无Cookie的域名中
静态资源如图片、flash、CSS和JS文件是不需要Cookie的,如果把这些文件放到有Cookie的域名中,则会产生多余的Cookie流量。
本规则将检查并提示是否有静态资源放在有Cookie的域名中。
避免重定向
重定向将产生额外的请求。
本规则将检查页面中的重定向请求。
避免404错误
产生404错误的原因是服务器找不到对应的url请求,这实质上也是产生了额外的请求。
本规则将检查页面中是否出现返回404的请求。
减少cookie大小
Cookie没必要也不宜过大。
本规则将检查以下2种情况:
* 如果某个Cookie超过1K,则认为该Cookie过大。
* 如果所有Cookie的平均大小超过400个字节,则认为平均Cookie过大。
其它优化功能详解
* 首屏高度是否合适
* 避免使用iframe
首屏高度是否合适
首屏高度过大或过小都将影响用户体验。
本规则以900像素为准来判断首屏高度是否合适,并列出首屏内的所有请求。
避免使用iframe
iframe会增加额外的请求,应尽量避免iframe的使用。
本规则将找出页面中的所有iframe。
分享到:
相关推荐
让你页面速度飞起来,Web前端性能优化。 让你页面速度飞起来,Web前端性能优化。百度云盘视频资料,下载直接看
针对web前端性能低下的问题,王成、李少元、郑黎晓、缑锦、曾梅琴、刘慧敏等学者系统地提出了一套旨在提高网页加载速度、呈现速度和用户体验的完整Web前端性能优化解决方案。该方案涵盖了服务器端优化、HTML优化、...
Web前端性能优化全攻略
让你页面速度飞起来 Web前端性能优化 让你页面速度飞起来 Web前端性能优化
### Web前端性能优化知识点 #### 一、构建优化 **1.1 文件压缩与合并** - **文件压缩**:利用工具如UglifyJS、Terser等对JavaScript、CSS等静态资源进行压缩,减少文件体积,从而加快加载速度。 - **文件合并**:...
Web 前端性能优化的研究与应用 摘要:随着计算机技术和网络通讯技术的高速发展,Web 应用已经成为人们的一种必不可少的工具,充斥着人们生活的方方面面。然而,随着 Web 站点数量的激增和用户规模的日益庞大,其...
郭碧青是腾讯公司的一位资深前端工程师,他在Web前端性能优化方面有着丰富的实践经验,并且对于性能优化的工作充满热情。郭碧青在行业内的知名度很高,虽然行事低调,但是经常受邀在各种大型会议和技术活动中分享...
Web前端性能优化是提升网页用户体验和确保网站成功的关键因素之一。性能优化涉及多个方面,包括但不限于代码优化、资源加载策略、服务器配置等。本篇内容将深入探讨Web前端性能优化的思路与学习方法,结合WebQQ、QQ...
前端性能优化探索 前端性能优化是当前互联网开发中的一个重要话题。随着互联网技术的快速发展,Web前端技术也逐渐成为了互联网开发的重要一环。然而,在如今这个追求极致体验的时代,我们不仅要实现业务需求,更...
在现代Web开发中,前端性能优化是至关重要的,它直接影响用户体验和网站的转化率。本文档将探讨如何提升WEB前端的性能,通过遵循一系列规则和使用专业的工具来达到最佳效果。我们将详细介绍YSLOW工具,这是一个非常...
Web 前端性能优化技术指南 Web 前端性能优化是指通过各种技术手段来提高 Web 应用程序的加载速度和响应速度,以提高用户体验。下面是 Web 前端性能优化的几个关键技术点: 一、加载优化 加载优化是指通过减少加载...
Web前端性能优化是提升网页加载速度和用户体验的关键环节。这篇经验分享主要涵盖了四个核心知识点,旨在帮助前端开发者理解和实践性能优化技巧。 1. 减少HTTP请求 HTTP请求是浏览器与服务器交互的基础,但每一次...
对于不断发展的Web应用,性能优化如同逆水行舟,不进则退。...本文侧重通过对前端性能的分析,为Web站点前端性能优化提供了理论依据和一般的优化策略,并讲述了一些用于B/S系统前端性能优化的常见规则和有效方法。
这本"前端性能优化原理与实践"小册子深入探讨了如何通过一系列技术手段优化前端页面,旨在帮助开发者构建更快、更流畅的Web应用。以下是该压缩包文件中可能涉及的一些核心知识点: 1. **延迟加载(Lazy Loading)**...
【web前端性能优化】是提升网站用户体验的关键环节。在当今互联网环境下,网页的加载速度直接影响着用户的满意度和网站的留存率。以下是一些基础且实用的前端优化策略: 1. **合并CSS和JavaScript文件**:减少HTTP...
在IT行业的领域内,"web前端性能测试"是一项至关重要的技术环节,它直接影响着用户的体验质量和网站的整体性能表现。从给定的文件信息来看,我们可以深入探讨以下几点关键知识点: ### 1. 前端性能测试的目的 前端...