网站Web端访问性能提升技巧总结

所属分类: 网站运营 / 网站优化 阅读数: 110
收藏 0 赞 0 分享

《高性能网站建设指南》这本书里为Web性能提升设置了14条规则:
1.尽量减少 HTTP 请求
2.使用 CDN
3.添加 Expires 头
4.采用 Gzip 压缩组件
5.将样式表放在顶部
6.将脚本放在底部
7.避免 CSS 表达式
8.使用外部的 javascript 和 CSS
9.减少 DNS 查询
10.精简 javascript
11.避免重定向
12.删除重复的脚本
13.配置 ETag
14.使 Ajax 可缓存
下面是一些基本总结:

一、 理解 Ajax 性能
做性能优化时,不要浪费时间去尝试为那些不消耗大量时间的代码提速。
通常浏览器在运行javascript上花费的时间很少,绝大部分时间消耗在 DOM 上。
Ajax 提供了取代页面替换的有效方案,善加利用 Ajax 能使应用程序运行的更快。

二、 创建快速响应的 WEB 应用
如何定义快速呢?
javascript 代码执行时间超过 0.1 秒,页面会给人不够平滑快捷的感觉;执行时间超过 1秒,则会感到应用程序缓慢;超过 10 秒,用户会非常沮丧。
javascript 是单线程的!
在页面上任何开销很大的(例如,长时间运行)javascript 操作都应该委托给 Web Worker。
在 XMLHttpRequest 的异步模式中,XHR 实质上就是一个拥有专用 API 的 Web Worker。
内存对响应时间的影响:
1.在 GC 执行回收时,会冻结整个运行环境,直到遍历完整个创建对象的“堆”。随着应用程序内存占用的增加,遍历整个堆去查找用户不再使用的对象所需要的时间最终会引起用户的注意。
2.网页内存需求增长到足够大,迫使操作系统开始内存分页,系统把内存页从物理内存转移到虚拟内存(例如从 RAM 到硬盘)。
如果确定内存有问题,可以通过以下两种方式清理内存:
1.使用 delete 关键字从内存中移除不再需要的 javascript 对象
2.从 DOM 树中移除不再是必须的节点

三、拆分初始化负载
可以把 javascript 代码拆分到不同的组,第一组包含初始化页面所必须的函数,剩下的则在这些代码需要执行时按需加载它们,或者等到初始化的那些 javascript 代码加载完毕时再加载。

四、 无阻塞加载脚本
浏览器在下载和解析 javascript 脚本时,不仅会阻塞页面中其他内容的下载,还会阻塞脚本后面所有元素的渲染。
浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或 javascript 的命名空间。
很显然 javascript 脚本没有必要按顺序下载,这方面 IE8 走在了前面,IE8 是第一个支持脚本并行下载的浏览器。
下面列出异步加载脚本的技术:
1.XHR eval:该技术用过 XHR 从服务器获得脚本,然后通过 eval 执行脚本内容。
2.XHR 注入:类似于 XHR eval,但是与 eval 不同的是,该机制是通过创建一个 script 的 DOM 元素,然后把 XHR 的响应注入到 script 中执行 javascript。
3.Script DOM Element:该技术使用 javascript 动态创建 script DOM 元素并设置其 src 属性。下载过程中用这种方式创建脚本不会阻塞其他组件。和前面的技术相比,该技术允许跨域获取脚本。
4.Script defer 属性:HTML 4 为 script 标签定义了一个扩展属性:defer。带有 defer 属性的 JavaScript 文件下载时,它不会阻塞浏览器的其他进程,因此这类文件可以与其他资源文件一起并行下载。带有 defer 属性的 script 标签可以放置在文档的任何位置。对应的 JavaScript 文件将在页面解析到 script 标签时开始下载,但不会执行,直到 DOM 加载完成,即onload事件触发前才会被执行。但是,defer 属性只被 IE 4 和 Firefox 3.5 更高版本的浏览器所支持,所以它不是一个理想的跨浏览器解决方案。
Script async 属性:HTML 5 为 script 标签定义了一个新的扩展属性:async。它的作用和 defer 一样,能够异步地加载和执行脚本,不因为加载脚本而阻塞页面的加载。但是有一点需要注意,在有 async 的情况下,JavaScript 脚本一旦下载好了就会执行,所以很有可能不是按照原本的顺序来执行的。如果 JavaScript 脚本前后有依赖性,使用 async 就很有可能出现错误。

五、 布置行内脚本
在样式表后面的行内脚本会阻塞所有后续资源的下载,解决该问题的方法是调整行内脚本的位置,使其不出现在样式表和任何其他资源之间。

六、 编写高效的 javascript
尽量避免使用会增长作用域链的结构,比如使用 with 语句和 try-catch 语句中的 catch 从句。如果非局部变量的使用超过一次,那么为了降低性能损耗,应该把它存储到一个局部变量中。例如,如果函数中多次访问处于作用域链底层的document,可以把 document 赋值给一个局部变量,从而减少降低在作用域链中搜索变量的时间。
存储和读取数据的方式对脚本的性能影响很大。局部变量和字面量总是最快的,存取数组元素和对象属性会引起性能损耗。如果数组元素或对象的属性使用超过一次,那么为了提高存取速度,应该把它存储到一个局部变量中。
在 javascript 中,循环经常成为性能瓶颈,为了使循环高效,可以使用倒序的方式来处理元素,即在控制条件中,将迭代变量和 0 作比较。
流控制也是影响脚本执行速度的一个重要因素。if 语句适用于少量离散值或一段区间值的判断;switch 语句最好用于 3~10 个离散值的判断。
谨慎的使用 DOM 中的 HTML nodelist 对象,每次存取这类对象的属性,都会重新查询 DOM 中的匹配节点。为了避免这种高昂的开销,只有必要时才存取 nodelist 对象,并将经常存取的值存储在局部变量中。例如,当用 for 遍历通过 getElementsByTagName 得到的 nodelist 对象时,应该把 nodelist 的 length 赋值给一个局部变量。
如果 javascript 代码运行时间过长,可以使用定时器把任务拆分执行。

七、 超越Gzip压缩
所有的浏览器都支持 Gzip压缩,并可以通过添加 Accept-Encoding 的 http 头来向 web 服务器声明支持压缩:
Accept-Encoding: gzip, deflate
当请求中包含这个头时, web 服务器就会开启 Gzip 压缩功能。

八、 图像优化
各种图片格式介绍
GIF:
1.只支持二进制透明(要么完全透明,要么完全不透明)
2.支持动画
3.是无损格式
4.gif 有 256 色的限制,不适合显示照片
JPEG:
1.不支持透明
2.不支持动画
3.是有损格式,压缩比很高,适合显示照片
PNG:
1.支持 alpha 透明
2.不支持动画
3.是无损格式
4.不是动画时,应该尽可能 使用 png8(调色板png) 代替 gif。
图像优化建议
1.首先要选择合适的格式:用 jpeg 保存照片,用 gif 保存动画,其他所有图像用 png 保存,并且尽量使用 png8
2.不要在 html 中对图像进行缩放
3.不要忘了 favicons
4.使用并优化 css sprite

九、 划分主域
IE6、7等老浏览器把从同一个服务器并行下载的资源数限制为2个,IE8、firefox和chrome增加到了6个。
浏览器执行 “每个服务器端最大连接数” 的限制是根据 URL 上的主机名,而不是解析出来的 IP 地址。
可以把网页中的资源放在不同的服务器上,加速资源的下载。

十、 少用 iframe
使用 iframe 会带来的问题:
iframe 是开销最高的 DOM 元素,创建 iframe 的开销比创建其他类型的 DOM 元素要高 1~2 个数量级。
使用 iframe 会阻塞页面的 onload 事件,延长了浏览器的忙指示。
虽然 iframe 是一个完全独立的文档,浏览器也会共享对每个浏览器的受限连接数(IE8、chrome为6个)

十一、 简化 CSS 选择符
CSS 的选择符类型(从开销最小到最大排序):
1.ID 选择符#
2.类选择符.
3.类型选择符
4.相邻兄弟选择符 +
5.子选择符
6.后代选择符
7.通配符选择符
8.属性选择符
9.伪类

更多精彩内容其他人还在看

关于百科做外链的一些看法分析

做网站优化的人都知道一句话就是“外链为皇,内容为王”,这句话的意思是说如果想做好网站的优化,网站不但要有优质原创的内容,还要有一定质量和数量的外部链接
收藏 0 赞 0 分享

浅析SEO常用指令的用法技巧以及出现的问题

现在网络上一些的站长工具层出不穷,功能也越来越丰富,我们可以从这些工具中看到我们网站的一个大体的数据显示,对于我们是有很多帮助的,但是,作为一个SEO从业者,要不断的提升自己,仅仅借助第三方工具是不够的,而且稍微有点麻烦,搜索引擎很好的为我们提供了SEO指
收藏 0 赞 0 分享

学会巧用网站软文营销 助力网站长尾词推广

在如今的互联网时代中,相信每位站长都能够深刻的感觉到,现在的网站优化工作是越来越难做,之前我们自己收藏的一些感觉权重还不错的外链资源如今也被搜索引擎认定为垃圾外链,效果越来越差,网站排名权重也是越来越难做,特别是一些比较热门的关键词更是难上加难,所以
收藏 0 赞 0 分享

解析页面优化的核心是什么

其实,对于网站优化来说,页面优化相对较简单,由于搜索引擎算法技术的提升,在判断网页相关性上做的越来越好,页面优化所涉及的技术细节不用做到面面俱到,而且在SEO越来越崇尚平衡自然的前提下,页面优化做的越细致,越有可能涉及过度优化。所以,对于页面优化来说,
收藏 0 赞 0 分享

菜鸟如何快速学习SEO

现在很多企业开始重视网站优化,SEO人员也开始多了起来,SEO的门槛其实不高,那菜鸟如何快速上手呢?看看这篇文章给大家的一些方法
收藏 0 赞 0 分享

网站经不起风浪 每次更新被降权的原因及其分析

说来也怪有些网站看着不怎么样,更别谈什么用户体验也不必说什么原创文章,就一个很普普通通的网站甚至可以说出自同一个人的首先,但为何网站的命运却不同,面对这百度更新命运往往是“有心栽花花不开 无心插柳柳成荫”究竟是什么原因呢
收藏 0 赞 0 分享

我们究竟该如何优化内容层级结构

从事SEO也有6年之久了,知道了SEO这个东西不是死技巧,做SEO一定要根据你的行业,你的定位,用不同的SEO手法去做,就好比外链的发布,要么你的质量的发,要么你是大量的发,这个根本不是定死的规矩,只是看你会不会灵活运用,今天笔者给大家讲一下如何优化内容层级结构
收藏 0 赞 0 分享

浅谈地方旅游门户网站的页面优化方法

常言道:人靠衣装,佛靠金装,打扮也是很要紧的。这句话充分体现出想要有好的一面就要学会装饰自己,让自己从内到外显得尤为特殊,而对于网站来说也是要遵循这一规则。目前,旅游的黄金假期快要到来,很多地方性的旅游门户网站已经大规模崛起,这也使得地方性旅游网站的
收藏 0 赞 0 分享

探讨seo中与关键词有关的页面排名因素的具体解析

通常,作为网站优化人员都知道,要提高一个网站的关键词排名,就要做好影响关键词排名因素的分析
收藏 0 赞 0 分享

老站如果想获得稳定排名 记住:请切勿优化过度

笔者从事网站优化的工作不知不觉已经两三年了,其中接手过不少老站,发现老站往往会比新站更难优化,原因在于老站很多时候排名会不稳定,有时候在前几页,有时候又会掉到100名之外,让人十分头疼
收藏 0 赞 0 分享
查看更多