存档

文章标签 ‘SEO JavaScript和CSS优化’

SEO性能优化之网站速度优化(JavaScript和CSS优化相关要点)

2013年6月9日 1 条评论

网站速度不仅影响用户体验,也影响Google robot对网站的爬取,进而影响网站收录;所以网站速度对于SEO的重要性不可小觑。Google Page Speed 主要用于分析检测页面加载速度和元素,提出建议。技术人员从而可以依据Page Speed的要点来修正和提高网页网站的质量。对于网页需要改进的地方,PageSpeed不仅提供了优化建议,甚至还直接把优化的最终结果都给提供出来。

Page speed来自于Google,可以下载插件安装在Firefox或Chrome上。插件一般都是英文版,Firefox也有中文版本,但缺乏详细解释。这里先把主要检测事项的中英文对比出来。然后针对细致的项进行解释并尽可能提供技术上操作说明。也可以用另一种方法,直接用Google https://developers.google.com/speed/pagespeed/insights 网站性能检测工具检测网站需要优化的细节。

今天我将介绍JavaScript和CSS优化相关要点,所有的整理资料都是来自于falconhan。

一、压缩JavaScript (Minify JavaScript)
压缩JavaScript的方法跟压缩HTML和压缩CSS在本质上的好处是一样的。一般的方式就是3种:压缩多余的空格和换行符;删除注释;把较长的变量名称和过程名称统一替换为很短的名称。

压缩工具也有很多,之前提到的YUI Compressor就可以执行。

Google/Gtmetrix有一句话看不懂,We recommend minifying any JS files that are 4096 bytes or larger in size. You should see a benefit for any file that can be reduced by 25 bytes or more。意思是尽可能压缩4K意思的JS文件,所获好处是文件可以被缩减25个字节或以上。猜测原因是缓存器的容量是4K,如果JS超过此大小将不会放入缓存中?

另外不确定的是,可被缩减的25bytes的文件是JS本身还是指其它文件,why? 高手请指示一二…………….

二、合并外部JavaScript (Combine external JavaScript)
合并外部的JavaScript文件,跟合并外部CSS是类似的原理,都能够有效减少往返时间(RTT)及在下载其它资源时减少延迟。过多的JS和CSS文件会导致过度的HTTP开销,简单有效的处理方式就是将外部的JS文件简化后再合并。

关于外部JavaScript的使用,有一些建议:
将页面的JavaScript分割为2个文件,一个包含那些必须的代码,这样在页面加载之初会率先调用。另一个就是可以等到其它HTML内容都加载完再调用的JS。在页面的之前使用的JavaScript,尽可能将其简化,这样能避免加载和解析时间过长而阻止其它内容能快速展现。将那些极少被大多数页面使用到的JavaScript代码,放置在独立的文件中,这样可避免多数页面不要调用它而浪费时间。对于那些不需要缓存的小段的JavaScript代码,考虑将其放在HTML页面代码当中。JS在页面中放置的位置也有讲究的,重要的内容优先展示是基本原则,还要考虑到JS或其它资源的并行下载以进一步节省时间。

三、内嵌小型 JavaScript (Inline small JavaScript)
内嵌小型JavaScript能够节省JS请求所导致的服务器请求/响应时间开销。就是对于小段的JS代码,直接嵌入在页面中会比单独的外部调用会好一些。但是更理想的解决方法是将小段JS整合起来再进行外部调用,参见合并外部的JavaScript。从节省时间的角度来考虑,JavaScript代码跟CSS用法类似,仅用于某个特效的小段代码可以写入在页面里,用于多个地方的JS可以合并来外部调用。

四、优化样式表和脚本的排列顺序 (Optimize the order of styles and scripts)
正确地部署外部样式和不管内外的Scripts脚本,能够合理并行下载资源,从而缩减浏览器对页面进行渲染的时间。由于JavaScript能够改变网页的内容和样式布局等,浏览器在遇到js时就会延迟执行渲染任何内容,而让位于先下载、解析和执行Script脚本内容。然而,比请求的时间更重要的是,浏览器在碰到Script时,其它资源没办法并行下载处理,会导致页面停顿,可能影响用户体验。

关于样式表和脚本之间的顺序关系,有几个推荐的处理顺序,一是尽可能把页面的重要内容在脚本和样式表前先加载,二是外部的脚本放在外部的样式之后,三是把内部的脚本放在所以其它内容之后。

五、压缩CSS (Minify CSS)
压缩CSS和压缩JS是一个道理,就是减少文件体积提高下载速度,浏览器在解析和执行CSS的时候也能提高速度。一个可用的工具是 YUI Compressor。

CSS自己压缩也可以,有一些方法,如使用CSS缩写块状间隔,
” padding-top:5px
padding-right:6px
padding-bottom:7px
padding-left:8px”
可以缩写为 padding:5px 6px 7px 8px;

每两位的颜色值都一样可简写,#aabb11 可写为 #ab1
去掉没必要的空格、换行、注释,去掉没必要的字体选项等。

六、去掉无用的CSS (Remove unused CSS)
PageSpeed告诉你,当前页面里面有多少CSS样式是没有被用到的,去掉它们可以进一步加快浏览器对CSS的解析量,提供整个页面的加载速度。

很多网站的做法都是大部分页面会沿用统一的CSS文件,这样在管理上比较容易些。但会导致了很多样式并不会被页面中的元素所使用,对单页面来讲造成一定的资源冗余。PageSpeed虽然把每个没有被当前页用到的CSS样式都列出来,但觉得这个实际的指导意义不够明显,因为,为每个页单独配一个CSS文件显得特二。

最好的处理办法是尽可能把CSS进行分类管理,比如针对不同频道页的(模板可能不同),针对图片形式的,针对表格的等,不同的页面会调用到不同的CSS。如果在建站时就规划好,这种方法就能兼顾CSS精简和管理上的便利。还有一点需要注意,就是在”合并外部的CSS”这个优化选项里提到的,多个较小的CSS应该合并到一个文件里以减少HTTP请求量,或者使用内联样式。

七、内嵌小型CSS (Inline small CSS)
将CSS代码进行外部调用是有好处的(最主要是方便统一管理),但是不能盲目地把所有CSS都改为外部调用。把一些小型(片段或体积不大)的CSS代码嵌入在页面HTML里,让浏览器直接下载解析,可以减少服务器请求/应答的时间开销,从而加快页面的加载速度。另外也可以把小型CSS都聚合为较大的单个CSS文件,再进行外部调用。

Google Pagespeed光说小型CSS,但到底体积大小是多少才算小。。。一说是768bytes,另外从某人试验中(基于Apache)得出另一个结论:体积小于2K(2046 bytes)的CSS代码算是小型,可以节省整体时间。以上2个说法都可作为参考,实际情况还需要进行测试,但小于768的就肯定适合去合并外调或内联使用。

八、合并外部的CSS (Combine external CSS)
合并外部样式表文件,能够减少往返时间(RTT)及在下载其它资源时减少延迟。外部过多的JS和CSS文件会导致过度的HTTP开销,简单处理方式就是合并,最好不要超过3个CSS文件的调用。

关于CSS的使用上,有一些建议:
将CSS分割为2个文件,一个是包含必须的样式,就是在页面加载之初会影响视觉效果的。另一个就是可以等到其它HTML内容都加载完再调用的。
对于那些不常被大多数页面用到的CSS样式,考虑放入到单独文件(比如有些表格样式CSS,只针对某些页面有效)。而对于那些只是对某个元素应用的CSS,则推荐使用内联样式。不要在CSS里使用 @import 来再调用其它的CSS,要么合并到主CSS里,要么单独再外部调用一次。

未完,待续…………..

转载注明出处《尉聊子的外贸网络营销博客》
原链接:http://www.hurencai.com/archives/142