其实这些黄金法则已经用烂了并且就快被我遗忘了,只是最近要整理前端开发质量的规范,所以就想起了它,正好又想起好久没博了,那就写写吧,希望对还不了解的兄弟们有所帮助!
法则1. Make fewer HTTP requests
这点对于提升前端开发性能的意义是非常大的,早有实践证明,浏览器加载一个页面的DOM结构仅仅只占总加载时间的10%-20%,剩下的时间都在处理页面上组件的下载,组件越多,HTTP的请求数越多,耗时自然就越长。所以我们要做的是尽量少的引用外部静态资源,js、css以及图片。
我们可以通过:图片地图、CSS sprites、合并脚本和样式表等方式来减少HTTP请求以达到提升页面的性能。这里简单提一下图片地图,四年前,他是为我所不耻的,那时候觉得这么做太不专业了,一直到YAHOO推出Yslow告诉我我错了,不相信的朋友,看看下面这个简单的分析:
上面的结果一个是用图片地图的方式做的,另外一种是采用6个带链接图片的方式做的,他们被渲染的结果一目了然,图片地图的方式由于减少了HTTP请求数,渲染效率提升了将近50%。而且你会惊奇的发现,合并后的图片比分离的图片大小的总和小,这其实是因为合并后的图片,降低了图片的颜色表,格式信息等内容。
法则2. Use a CDN
根据用户群的分布,为你的网站内容以及静态资源安排离用户最近的网络发布点,这样用户的HTTP请求的响应时间将缩短,从而提升用户访问的速度。
对于一般性网站,这项是烧钱的活,顶多摸摸口袋,遐想一下而已,哈哈!当然作为穷人的我们,也可以自娱自乐一翻,在firefox地址栏输入about:config打开FF的参数设置界面,新建一个名为extensions.firebug.yslow.cdnHostnames的字符串变量,把你的网站地址作为这个变量的值,这样Yslow就会把你的网站当成一个CDN服务器,认为这个网站上的所有文件都是经过CDN加速的
法则3. Add an Expires header
给文件加上关于过期时间的header报文,让用户通过本地缓存来更快的访问网站
这个文件过期时间,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和文章中调用的图片)其实在很长一段时间内我们都不会对它们有什么改变,这类文件可以设置非常长的缓存时间,这样浏览器以后就不需要再从服务器下载这些文件而直接从缓存中读取,从而大大加速网站的载入速度。
以Apache配置为例,我们要做的,是在网站的.htaccess文件中写入以下内容:
-
<IfModule mod_expires.c>
-
ExpiresActive On
-
ExpiresDefault A600
-
ExpiresByType image/x-icon A2592000
-
ExpiresByType application/x-javascript A604800
-
ExpiresByType text/css A604800
-
ExpiresByType image/gif A2592000
-
ExpiresByType image/png A2592000
-
ExpiresByType image/jpeg A2592000
-
ExpiresByType text/plain A86400
-
ExpiresByType application/x-shockwave-flash A2592000
-
ExpiresByType video/x-flv A2592000
-
ExpiresByType application/pdf A2592000
-
ExpiresByType text/html A600
-
</IfModule>
text/css表示样式表文件,text/plain代表的纯文本类文件,依次类推。那个A2592000就表示这种类型文件在浏览器中的缓存时间,以秒为单位。一天86400秒,2592000就表示这类文件可以缓存30天。如果你不是经常修改模板,那样式表文件和javasctipt文件基本上也可以设置缓存一周到一个月左右。text/html文件不要设置太长的缓存时间,因为这些东西修改的频率很高,而且大部分blog的访客平均访问时间能到10分钟的并不多。
法则4. Gzip components
压缩HTTP响应包,减少网络传输时间,顾明思意,这是通过减小HTTP请求的大小,来减少用户的响应时间的。下面简单介绍一下它的工作原理:从HTTP1.1开始,客户端向目标服务器发送的请求信息中就有accept-Encoding标识对压缩的支持,如果目标服务器看到请求中有该标识,就会用该标识中列出的压缩技术对HTTP响应做压缩,并且会在返回的响应中用content-encoding标识告诉客户端采用了什么压缩方法。
压缩后基本上可以将返回的HTTP响应大小减少60%-70%,响应时间比未压缩之前至少提升50%以上,所以意义也是非常之大的。
法则5. Put CSS at the top
将CSS放在页面头部,这个主要是为了让浏览器可以逐步的渲染出页面,避免IE出现白屏的现象。这一点对页面以及组制件的加载速度其实是没什么影响的,更多的是从用户体验的角度去完善用户访问页面时的视觉感观。
法则6. Put JS at the bottom
将JS放在页面底部,一般情况下JS的下载是阻塞模式的,放在页面顶部会阻塞其他资源的下载,这样也会造成浏览器的白屏现象。
看上图,很明显,页面在头部加载了一个脚本,耗时1秒多,这一秒多的时间页面是白屏的,当脚本加载完成以后,才能继续加载页面中的其他组件,我们可以清楚的发现脚本下载阻塞了页面的呈现,所以有条件的话可以单独配置一台JS服务器,哈哈
法则7. Avoid CSS expressions
不要使用CSS表达式,因为不当的CSS表达式需要很多资源,有时甚至会造成页面假死,当然如果你自认为你已经是CSS专家,并且可以完全驾驭表达式造成的性能问题的话,我觉得用它没什么问题。不过IE-only,价值不是特别大,所以还是少用为妙啊。
法则8. Make JS and CSS external
将CSS和JS使用外部的独立文件引用,其实这个和减少HTTP请求是矛盾的,而且事实上不考虑其他因素的影响,内联JS和CSS对于页面加载的速度比外联快很多。不过结合前面缓存外联的JS和CSS的话,不单可以实现减少HTTP请求,还可以减少HTML的文件大小,一举两得,让不可能变成了可能!不过最合理的做法应该是先判断外联元素是否被缓存,如果有的话就动态加载外联的元素,没有的话就调用内联的元素。
法则9. Reduce DNS lookups
减少域名解析次数,域名解析也是个耗时的头儿,要注意。这CDN一多,域名查询也多,是冲突的。大家按自己情况合理取舍。
通常情况下按照我们的理解,静态资源文件都是放在本站点目录下的。由于以前大家的网络速度都不快,IE浏览器为了防止大量的http请求阻塞了网络连接,所以同一域名下的http请求,只允许2个并发线程,所以这就导致我们看到有的页面的图片是逐步逐步显示出来的。显而易见,为了突破这个限制,我们可以增加几个域名,从而增加并发下载,加快速度。
法则10. Minify JS
最小化压缩JS,和第4点不同,使用YUI Compressor或者JSMin将JS文件进行分析,将一些变量名变短,去除不必要的空格和符号
法则11. Avoid redirects
避免重定向
法则12. Remove duplicate scripts
去除重复的脚本,不光是文件,甚至是同功能的函数
法则13. Configure ETags
配置实体标签,ETag是用于服务器和浏览器间文档校验的一种手段,如果匹配就使用缓存版本,不匹配的话,重新下载。但是使用CDN的时候,不同镜像间的ETag是不一样的,这就导致了ETag的失灵。我们删除ETag。
相关推荐
小议图书馆网站的创立和维护.doc
小议如何提升烟草企业精益财务管理水平.pdf
【提高教师心理健康的重要性】 教师的心理健康对于教育事业至关重要。教师不仅是知识的传播者,更是学生心理成长的重要影响者。教师的心理健康状况直接影响到他们的教育教学效果,以及学生的情感发展和社会适应能力...
【视频分享网站的侵权责任与法律地位】 视频分享网站在当今数字时代扮演着重要的角色,它们为用户提供了便捷的平台,使人们能够分享和观看各类视频内容。然而,这种服务模式也引发了一系列关于著作权侵权的问题。...
小议经济型酒店消费者心理及消费方向.doc
小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...
【小议小学美术教学中提高学习效果的途径】 在当今社会,教育的不断发展对教师提出了更高的要求,尤其是在小学美术教学中。美术教学不仅是提升学生艺术技能的重要途径,更是培养他们创新思维、审美感知和动手能力的...
### 抖动算法小议——深入探讨多媒体技术中图像的抖动算法 #### 引言 在多媒体领域,尤其是在图像处理技术中,抖动算法扮演着至关重要的角色。本文旨在通过对抖动算法的深入解析,帮助读者理解其原理及其在灰度...
Athlon XP的性能提高了10%-20%,而功耗降低了15%左右。 Athlon XP的PR值是1500+、1600+、1700+、1800+等,表示处理器的综合性能。 在了解Athlon XP的性能指标之前,我们需要了解PR值的计算方法。PR值的计算方法是:...
5. 管理制度滞后:现有的现金管理制度可能存在不足,需要更新以适应新的经济环境和犯罪手法,加强金融机构的监管力度,提高客户对合规性的认识。 6. 社会诚信与金融机构管理:低社会诚信水平可能导致现金交易的增加...
【玉米种子发芽率提升策略】 玉米作为重要的粮食作物,其产量受到诸多因素的影响,其中种子的发芽率是决定种植成功率的关键因素之一。本文主要探讨玉米种子的形态特征、发芽过程,以及影响发芽的主要因素,并提出...
小议嵌入式计算机技术.pdf
法治思想起源小议.docx
小议食品安全问题.doc
小议人力资源外包.doc
小议“地摊经济”合集
小议“地摊经济”2020
【高中思想政治课堂教学质量提升策略】 在当前的教育背景下,提高高中思想政治课堂教学质量是至关重要的任务。教师必须紧跟时代步伐,不断创新教学方式,以适应新课程改革的要求。以下是一些有助于提升高中思想政治...