【原】提高网站加载速度的3项黄金守则

如何优化网页加载速度是每个前端开发工程师需要了解的,也是前端开发工程师需要具备的基本条件。

优化网站加载速度的原理主要是减少网站文件的大小,减少HTTP请求数。网站文件越小,浏览器加载页面会比较轻松,打开页面的速度也会提升;一个HTTP请求,对页面打开速度造成的延时大概是0.01秒,HTTP的请求数越多,网站打开的速度就会越慢。

那么如何减少网站文件的大小,减少HTTP请求数呢?笔者做前端(重构方向)有2年多了,这里分享3项优化网站加载速度的方法,希望能给有需要的同学以及刚接触前端的初学者带来帮助~

comm on!一起来优化你的网站~

1、优化图片

使用Css Sprites(适用于大流量的网站)

其原理是把网页中一些背景图片整合到一张图片文件中,再利用CSS的"background"的进行背景定位。Css Sprites 最大的好处是减少http请求数,减轻服务器的压力,但使用它是需要付出"降低开发效率,增大维护成本的代价",对流量小的网站带来的好处并不明显,使用它取决网站的流量。

图片合成的工具如:Photoshop,输出样式的工具如:LinrPStoolkit-5、腾讯鬼哥的Css Sprites 样式生成工具;这样做的好处是尽可能减少图片数,将HTTP请求减少到最低,减轻服务器的压力。

示例:合并5张小图

    

合并后的代码

.ico-1,.ico-2,.ico-3,.ico-4,.ico-5
{
display:inline-block;
background: url(img/ico.png) no-repeat;
overflow:hidden;
}
.ico-1{width:106px;height:104px;background-position:0 0;}
.ico-2{width:44px;height:104px;background-position:-107px 0;}
.ico-3{width:25px;height:104px;background-position:-152px 0;}
.ico-4{width:44px;height:52px;background-position:-178px 0;}
.ico-5{width:44px;height:51px;background-position:-178px -53px;}

合并后的Css sprite图片

给图片减肥
保证图片不失真的前提,适当压缩是图片大小,不仅可以减少用户等待时间,降低公司带宽使用,节约成本。

下面的截图是去年公司的一张轮播广告图,每张图片大小都超过100K左右,在0.5M低带宽下,最大一张等待了7秒,仅仅4张轮播广告图就等了20秒,这种情况用户还会继续等待吗?

查了原因,了解这些图片从设计师给过来后,产品经理直接通过广告系统发布上线,并没有进行压缩图片,导致了用户在低网速情况下等待时间过久,无疑会流失很多用户。

如何压缩jpg图片呢?

这里以广告图为例,通常广告图的内容和色彩是比较丰富的jpg图片,jpg是有损压缩格式,压缩的时候主要注意保证图片清晰为前提,把图像上一些人眼不敏感的细节去掉,来达到减少图片大型的效果。使用最常见图片处理软件PS,存储为web所有格式(快捷键是alt+shift+ctrl+s)可压缩jpg图片。

把图片质量调整为中,品质在45~60之间,可一定幅度减少jpg图片的大小,大家可以试试看。

如何压缩png图片呢?

一淘UX的一丝冰凉,有篇png的秘密,写得非常好,对png图片解释的非常详细,文章最后有png的各种压缩工具,这边我搬过来了,如下:

推荐压缩工具 PngOptimizer (http://psydk.org/PngOptimizer)
推荐压缩工具 Pngout (http://advsys.net/ken/utils.htm)
推荐压缩工具 雅虎: Smush.it(http://www.smushit.com/ysmush.it/

2.优化HTML页面

删除不必要的空白字符和注释

删除对执行结果无影响的空格、换行、tab和注释

减少DOM元素数量

HTML页面中节点数目越多需要下载更多数据,同时也意味着JavaScript遍历DOM的效率越慢,减少不必要的标签嵌套可提升页面性能。

使用连接式link缓存CSS和JS文件

使用外部连接式link,加载CSS和JS文件,浏览器第一次访问页面后缓存他们,以后调用他们拥有更快的页面加载速度。
内置在HTML页面中的CSS和JS,会在每次请求中随HTML文档重新下载,这虽然减少了HTTP请求的次数,却增加了HTML文档的大小。从另一方面来说,如果外部文件中的CSS和JS被浏览器缓存,在没有增加HTTP请求次数的同时可以减少HTML文档的大小。

<link href="global.css?v=20130219" rel="stylesheet" type="text/css" />

大型网站主页内置CSS和JS

比较适合使用内置代码的例外就是大型网站的主页,主页在一次打开中拥有较少(可能只有一次)的浏览量,采用了减少HTTP请求的方法,把CSS写到HTML文件里,而不采用外部调用的方法,也可以防止css没有加载完毕出现页面乱的现象,内置CSS和JS对于终端用户来说会加快响应时间,用户体验好。 

<style type="text/css">
......
</style>

<script type="text/javascript">
......
</script>

减少css、js文件数目

CSS和JS文件可以合并的最好合并

例如
<link rel="stylesheet" type="text/css" href="reset.css" />
<link rel="stylesheet" type="text/css" href="common.css" />
<link rel="stylesheet" type="text/css" href="index.css" />
<link rel="stylesheet" type="text/css" href="page.css" />
<script type="text/javascript" src="page.js"></script>
<script type="text/javascript" src="v4.js"></script>

1.reset.css和common.css是公用的样式,可合并为global.css

2.index.css和page.css为私有的样式,可合并为index.css

3.page.js和v4.js为私有脚本,可以合并为index.js

合并后:

<link rel="stylesheet" type="text/css" href="global.css" />
<link rel="stylesheet" type="text/css" href="index.css" />
<script  type="text/javascript" src="index.js"></script>

这样一来可以减少3个http请求

css放页头head标签中,js文件放页面底部

用户没有太多的耐心等待页面加载,我们可利用网页先展现给用户,后加载功能原则

1.优先加载css:

浏览器渲染HTML的顺序是从上到下,下载和渲染是同时进行的,在载入HTML元素之前,先加载css,可以避免HTML出现无样式状态,先将网页展现给用户

2.最后加载js:

如果js文件放到页面顶部,浏览器加载网页,加载js时,还没有加载HTML代码,网页显示为空白,脚本阻塞了HTML的加载,也可能会出现js捕捉不到操作的节点,就会报错

网址后加反斜杠

有些网址,比如"https://www.tenpay.com/v2/mapp",当服务器收到这样一个地址请求的时候,它需要花费时间去确定这个地址的文件类型。在网址后多加一个斜杠,让其变成"https://www.tenpay.com/v2/mapp/",这样服务器就能一目了然地知道要访问该目录下的index文件,从而节省了加载时间。

img、table、iframe标签标明高度和宽度

例如网页上添加图片时,标明它们的高度和宽度,也就是height和width参数。如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。
下面是一个比较友好的图片代码:
<img width="120" height="40" src="logo.gif" alt="logo" />
当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容,从而加载时间快了,浏览体验也更好了。

3、优化CSS文件

不要在ID或者class选择器前使用标签名
一般写法:span.ico-peun
更好写法:.ico-peun
尽量少使用层级关系,使用长命名
一般写法:.main .line span.txt{...}
更好写法:.main-line-txt{...}

为什么要这样写呢?浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如.main .line .txt{...},浏览器的查找顺序如下:先查找html中所有class='txt'的span元素,找到后,再查找其父辈元素中是否有class="line"的元素,再判断.line的父元素中是否有class="main"元素,如果都存在则匹配上。 浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。

长命名的写法有2个好处:一来可以减少代码量,二来可以提高选择器解析css代码的速度。

使用class代替层级关系
一般写法:.main ul li a{display:block;}
更好写法:.block{display:block;}

CSS代码简写

简写的好处是代码简练,提高开发速度,并减少多余的代码量

.test{
      margin-top: 10px;
      margin-right: 20px;
      margin-bottom: 10px;
      margin-left: 20px;
}
简化为:
.test{margin: 10px 20px 10px 20px;}

CSS代码一行式编码风格,去掉不需要的空白字符(空格、换行、tab缩进)

一行式的好处是有效减少css文件的行数和空白符,最终减少文件的大小

.test{
      width:50px;
      height:100px;
      color:#000000;
}
简化为:
.test{width:50px;height:100px;color:#000000;}

压缩css,最有效的减少文件大小(去除注释、空白字符)

如把css文件复制成为2份,把其中一份保留原稿,令一份压缩并添加min后缀,并把压缩这份用于线上使用

常见压缩工具:YUICompressor,淘宝封装的css和js压缩工具TBCompressor,站长工具等,都适合css和js文件的压缩,去掉不需要的空白字符(空格、换行、tab缩进)

作者:白树

出处:http://peunzhang.cnblogs.com/

时间: 2024-12-03 14:22:37

【原】提高网站加载速度的3项黄金守则的相关文章

用headjs来管理和加载js 提高网站加载速度_javascript技巧

现在有许多成熟的js模块加载器,比如requirejs和seajs等,但是对一些小的项目来说,它们的功能可能太过于"强大",也许我们只是想要有一个能动态加载js的功能,或许我们只是想装B一下,让自己写出的页面没有一大堆的<script src="a.js"></script>这样的东西.前面说的两种js加载器都是更强调模块性,也就是更强调js文件的组织和管理,更适用于大的项目. 就像刚刚说的,我只想有一个js文件加载器,我只需提供给它一个js

提高网页加载速度的初步简单技巧方式

网页的加载速度是评估网站质量一个重要指标.原因在于大多数用户能够容忍的网页加载时间只有几秒,如果超出了访客的忍受范围他们会毫不留情地关掉你的网 页,所以网页载入速度会极大地影响网站的流量和访问.以下总结了几种可以明显提高网站加载速度的初步简单技巧方式,如果你的网站存在载入速度慢的问题不妨 与此为参考对网页做些初步优化. 网页加载提速之 – 优化网页图片文件 你的网页一定有图片,加载一个网页往往图片的总尺寸是最大的,特别是那些颜色丰富的背景图片和大副广告图片.所以一般要在同等图片质量的情况下要尽可

提高页面加载速度的几个方法小结_网站应用

很久没写技术方面的东西,是因为在做了一段时间的技术以后我越发发现,学什么技术或者技术应该钻研到什么层次真的不是最重要的,最重要的是解决问题的方法和能力.所以以后如果再写技术类的文章,定要少些技术细节,多一些方法和思路,今天就给大家介绍几个提高页面装载时间的方法,都是我在工作当中实践出来的经验. 首先给大家列出几个阻碍loadtime提高的因素,有不足的欢迎补充: 1.页面大小: 2.页面连接数: 3.服务器抗压能力: 4.网络状况(包括带宽和网段等因素): 一.页面大小 页面大小是指页面内容的字

网站加载速度对SEO优化意义

对于网站加载速度,相信大家最直观的感受就是网页的打开速度了,好的服务器,好的程序,我们打开网页的速度绝对是杠杠的,所以在谈到SEO的时候,最开始的阶段我们都会建议选择好的服务器,一个是稳定,一个是速度.但是大家可能还会忽略网站加载速度对于网站SEO的影响. 很多人谈到网站加载速度都是从用户的角度出发,谈到的都是用户体验,虽然这一点无可厚非,但是我们却没有从根本上去分析网站加载速度会对网站SEO内在的一些方面造成什么样的影响.这也是今天北京SEO要和大家分享的一点知识:网站加载速度影响网站收录.

如何解决CSS JS和图片对网站加载速度的影响

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于网站加载速度的严格要求一致是seo优化过程中的重点,如何提升网站加载速度,服务器,网站内容元素等都有很大的关系,本篇文章将从CSS JS和图片三个方面进行详细的讲解. 1.图片 (1)指定图像尺寸 加载图像之前,您的浏览器开始渲染页面.制定图像尺寸,有助于它环绕不可替代的元素.如果没有制定尺寸,一旦图像被下载您的浏览器将回流,为了做到这个

静态资源的分布对网站加载速度的影响/浏览器对同一域名下并发加载资源数量

静态资源的分布对网站加载速度的影响 / 浏览器对同一域名下并发加载资源数量 / browsers network-http-persistent-max-connections-per-server 引文:浏览器在同一个域名下并发加载的资源数量是有限的,访问淘宝首页需要加载126个资源,那么如此小的并发连接数自然会加载很久,所以前端开发人员往往会将上述这些资源文件分布在多个域名下,变相的绕过浏览器的这个限制,同时也为下文的CDN工作做准备 [ 摘自:<淘宝技术这十年>P6-P7 ] 不同浏览器

如何提高网页加载速度

1.减少页面请求: 从WEB运行原理上讲,IIS请求是无状态的,在服务器端一直是连接和关闭的不断进行着,如果能减少服务器请求,总的时间将会减少. 之前我下载163邮箱的登陆页面的图片时发现,它们的只用到了一个图片来完成整个页面的所有图片,当时我就纳闷了,这跟平时做的网站不一样呀.然来这样做减少浏览器的请求次数,用httpwatch你会发现请求的总时间大大减少了.同样的想法,在做css样式,JavaScript代码的时候也要做到尽可能的放在一个文件下来减少WEB请求. 2.页面压缩技术,给我们js

Windows下使用apache模块实现合并多个js、css提高网页加载速度_win服务器

现在的网站表现力越来越丰富,页面加载的js和css自然也越来越多.当网站页面上的js和css太多,浏览器打开页面的速度就会很慢,明显降低了用户的体验.使用mod_concatx, 可以合并多个文件在一个http响应报文中,可以有效提高js/css的加载速度. 示例效果如下: mod_concatx模块是在mod_concat基础上修改的,感谢他们的工作. 原有的mod_concat模块有很大的参考价值,但实际作用不大. 该模块存在以下三个问题: 1.每次都会重新向客户端发数据,没有合理利用浏览器

提高网页加载速度的一些建议

分享优化网页加载速度的七个技巧一.优化图片几乎没有哪个网页上是没有图片的.如果你经历过56K猫的年代,你一定不会很喜欢有大量图片的网站.因为加载那样一个网页会花费大量的时间.即使在现在,网络带宽有了很多的提高,56K猫逐渐淡出,优化图片以加快网页速度还是很有必要的.优化图片包括减少图片数.降低图像质量.使用恰当的格式.1.减少图片数:去除不必要的图片.2.降低图像质量:如果不是很必要,尝试降低图像的质量,尤其是jpg格式,降低5%的质量看起来变化不是很大,但文件大小的变化是比较大的.3.使用恰当