如何提高网站速度(Yahoo军规)

互联网高速发展当今,用户对快速访问网页需求越来越高,做为网站建设者,如何提高网站性能,成为炙手可热的问题,
雅虎军规

尽可能减少HTTP请求数

HTTP请求是什么?
当你打开网页的时候,所看到的文字、图片、多媒体等,每一个内容(如文字、图片、js、css)的获取,就是一个http请求;
·如何优化请求:文字,图片合并,js合并,css合并;

使用CDN(内容分发网络)

什么是CDN?
解释:在离你最近的地方,放一台(性能好连接顺畅)副本服务器。以最近的距离,最快速度获取内容。
使用CDN系统:增加服务器

添加Expire/Cache-Control头

expire模块:
1.如果要对文件添加cache可以通过apache的mod_expire模块
2.如果是对网页的缓存就是通过在页面中添加meta标签实现

启用Gzip压缩

将资源在服务端口先进行压缩处理减小体积,然后在浏览器上在解压缩解释执行!

使用Gzip:
·把文件先压缩,再传输
·流程:原始79–本地压缩–服务器端对已经压缩的再压缩-
·优点:提升文件传输速度;(在服务器端配置)

将CSS房在页面最上方

将CSS放在页面的最上面,主要是浏览器解析文件的时候是从左到右从上到下来进行的,这样可以解决网页空白或者错乱或者闪烁的问题!
解决:先加载css,放头部提高渲染性能,避免页面空白或者重绘

将Script放在页面最下方

将Script放在页面的最下面,因为浏览器加载和解释网页的顺序是从左到右从上到下的,如果JavaScript代码有死循环的问题,网页可能是空白一片的,如果放在页面的最下面即使如此,页面也能展现出来,当然这个问题最好避免!

避免在CSS中使用Expressions

所谓css expression就是css的属性值是由js计算出来的
它会将自己的属性(固有属性和自定义属性)与JavaScript结合起来一起使用,这样会比较占资源,影响浏览器的性能影响用户的使用体验度!

把Javascript和CSS都放在外部文件中

将JavaScript和CSS都放在外部的文件中,单独提取的好处
1:提高了JS和CSS的复用性;
2:减少了页面的体积;
3:提高了JS和CSS的可维护性

js放在内部的优点
1:减少了页面的请求数;
2:提升了页面的渲染速度

css和js写在页面的情况:
1.只应用于一个页面
2.不经常被访问
3.脚本和样式很少(少于20行)

减少DNS查询

DNS查找过程:域名对应到一个IP地址,然后通过DNS查找找到IP对应的网址,然后才访问到相关服务器。

如果同时很多查找过程,会影响速度;因此需要浏览器的缓存;
·IE30m,ff60s,chrome60s,
·缓存长:减少dns重复查找,节省时间;
·缓存短:及时检测服务器的变化,保证正确性;

多域和单域:
多域:
不同资源放在不同的ip
单域:
所有资源放在一个IP

最小化JavaScript和CSS

体的方法可以有

  1. 去掉不必要的空白符、格式符、注释符;
  2. 简写方法名、参数名压缩Js脚本

建议:
在正式上线项目前,将JavaScript和CSS都进行压缩,使线上版本是最轻量级的,大幅提升网站性能。

避免重定向


重定向状态码:

  1. 301:被移动到了另外的位置。永久重定向
  2. 302:用户请求页面被找到,但不在原始位置;临时重定向

    为什么避免重定向?
    弊端:增加服务器到浏览器的访问次数;

移除重复的脚本

重复引用同一个脚本时,会产生一些意想不到的错误,尽量小心,不要重复引用

配置实体标签(ETAG)

什么是ETag?
ETag:Entity Tag(实体标签),属于HTTP协议,受web服务支持。
用特殊的字符串,来表示某个请求资源版本
·用户通过浏览器向服务器进行请求资源的时候,比对ETAG,如果浏览器的和服务器的etag一样,那就用本地的.
10

在典型用法中,当一个URL被请求,Web服务器会返回资源和其相应的ETag值,它会被放置在HTTP的“ETag”字段中:
ETag: “686897696a7c876b7e”
然后,客户端可以决定是否缓存这个资源和它的ETag。以后,如果客户端想再次请求相同的URL,将会发送一个包含已保存的ETag和“If-None-Match”字段的请求。
If-None-Match: “686897696a7c876b7e”
客户端请求之后,服务器可能会比较客户端的ETag和当前版本资源的ETag。如果ETag值匹配,这就意味着资源没有改变,服务器便会发送回一个极短的响应,包含HTTP “304 未修改”的状态。304状态告诉客户端,它的缓存版本是最新的,并应该使用它。
然而,如果ETag的值不匹配,这就意味着资源很可能发生了变化,那么,一个完整的响应就会被返回,包括资源的内容,就好像ETag没有被使用。这种情况下,客户端可以用新返回的资源和新的ETag替代先前的缓存版本。
–摘自维基百科HTTP ETAG

使AJAX缓存

AjAX:异步的JavaScript和XML,在不重新加载页面的情况下,使客户端与服务器间进行交换数据,它可以使网站内容进行分批加载,也可以局部更新内容。
11

Yslow工具插件

Yslow插件,功能:网站性能分析。对网站进行分析,给出优化报告。
YSlow(基于浏览器执行),在ff下执行的最好。
安装步骤:
1 安装fireBug
2 YSlow

参考资源:

  1. 慕课网 http://www.imooc.com/learn/50
  2. 前端优化不完全指南: http://aotu.io/notes/2016/03/16/optimization/
  3. 雅虎军规:http://www.alibuybuy.com/posts/62655.html
坚持原创技术分享,您的支持将鼓励我继续创作!