1.使用CDN

  内容分发服务器会根据用户的位置选择最近的服务器响应用户的请求,静态资源放在CDN的性能将提升20%左右。

2.设置Expires和Cache-Contral头

  将静态资源的过期时间设置一个遥远的日期,那么这将是304请求

  将动态资源设置一个Cache-Contral来帮助浏览器有条件的请求

  这个时候我们的静态资源就要带上版本号了,以便于更新的时候可以获取到最新的代码

3.配置ETags

  a) 客户端请求一个页面Page A

  b)服务器返回Page A 连同ETags一起

  c)客户端接收到Page A 并且缓存Etags

  d)客户端再次请求Page A ,带上了缓存中的ETags一起发往服务器

  e)服务器收到请求,发现Etags并未改变。直接返回响应304(未修改——Not Modified)和一个空的响应体。

4.使用get来响应Ajax请求

  因为post请求是分成2次的。第一次会先发送请求头,第二次才发送数据。而get只需要发送一个数据包,但是限制在20K内。

5.尽量减少HTTP请求

  合并CSS JS Image,使用CSS的background-position去定位图片。

  如果一个CSS或者JS是通用模块,我认为也可以不需要合并,因为多次访问同一个资源是304

  但是对于第一次访问web的用户,合并是最好的

6.减少NDS解析

  因为DNS解析需要20-120ms,而在这期间浏览器是等待状态的。

  但是考虑到并行下载需要多个域名,建议控制在4个以内。

7.避免重定向

  重定向会导致用户访问的时间增加

  一个经常发生的场景就是'/',例如我们访问http://astrology.yahoo.com/astrology被301到

  http://astrology.yahoo.com/astrology 。所以我们要是第一次就带上'/',那么就避免了这次重定向。

8.减少DOM元素的数量

  过于复杂的DOM结构以为访问者下载更多的数据,javascript访问DOM的速度本身是很慢的,然而随着DOM数量的增加这会更加糟糕。

9.避免404错误

  HTTP请求的代价是非常昂贵的,404会终止我们的并行下载,如果是js发生了404,浏览器还会试图从404的结果中找到js的内容。

10.把CSS放在页面顶部

  雅虎的研究表明把CSS放在head里面可以加快页面的渲染,因为允许了浏览器获取到DMO就逐步渲染。浏览器为了避免重绘页面,

  需要等待把CSS加载完后才知道如果渲染。如果你把他们放在底部了,那么将会因为没有施工图纸而无法开工。

11.避免使用CSS表达式

12.避免使用@import来引入CSS

13.把JS放在页面的底部

  HTTP/1.1规范建议同一域名下并行下载的资源数量不应该超过2个,如果图片存于不同的域名下面,那么不受此限制。js在下载的时候

会中断其他资源的下载即使是其他域名下面的。所以让js最后加载会使得页面加载等更流畅。

14.使用外链的JavaScript和CSS

  因为外链的JavaScript和CSS可以更好的被浏览器缓存,特别是多页面的共同引用某个JS或者CSS时。虽然这增加了HTTP请求的数量,

但是对于后面的访问来说则不然了。

15.压缩JavaScript和CSS

  压缩JS和CSS可以提高下载的速度,使文件变得更加苗条了。

16.减少DOM操作

  因为JS访问DOM天生就慢,所以应该采取相应的措施:

    a)缓存已经访问过的节点

    b)'离线'操作DOM,完成以后再一次性添加到对应的DOM

    c)避免使用JS来布局页面

17.使用智能事件

  如果你有10个按钮在div.btns里面,你把事件绑定到button上面,将会有10个监听器。而如果使用代理给div.btns那么只需要一个监听器。

18.优化图片

  目前我在使用Grunt的插件来优化我们的图片,优化以后的图片尺寸明显小了很多。

19.不要在HTML中缩放图像

  比如你的图片是100px * 100px 的,那么img标签里面的尺寸应该是 100px * 100px.如果需要自适应的话是否应该考虑CSS3呢?

20.移动端

  a)不要使用大于25KB的组件(这里是指未压缩的尺寸),iphone不会缓存大于这个数字的组件。

yahoo给出的关于网站优化的建议的更多相关文章

  1. Java Web 高性能开发,第 3 部分: 网站优化实战

    这个系列的前两篇,介绍了前端的优化技术,这些技术秉承了前人至高无上的智慧,我只是负责吸收和传播.然而,这些技术一般也都是某某大型网站的技术经验,我们大部分人或许只能接触到相对小规模的网站,小规模的网站 ...

  2. web网站优化

    没事儿研究一下YAHOO工程师对网站优化给出的策略,对重点部分在这儿做下笔记 -----------------------------------------------我是分割线--------- ...

  3. ASP.NET网站优化(转自一位博友的文章,写的非常好)

    不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...

  4. 【IIS】 网站优化

    [IIS] 网站优化 一. 从硬件入手,升级服务器的cpu,内存,硬盘 这是成本最低的方法,所以如果要优化,请先考虑下现有服务器的硬件能力是不是满足要求. 二. 从数据库入手 索引: 检查该建的索引建 ...

  5. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)

    在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...

  6. 怎么通过网站优化来增强SEO效果?

    真正好的网站优化不应该针对哪一个搜索引擎,而应该关注用户的需求.搜索引擎把这这用户指标权重提升,实际上也是希望把更多的精力集中在用户体验的提升上面.那么,这些用户指标应该怎样提升呢?方法多种多样,下面 ...

  7. 网站优化不等于搜索引擎优化SEO

    对于SEO相信搞网络营销的人基本上都知道这个名词,英文全称为search engine optimization,中文一般叫搜索引擎优化,也有的叫搜索引擎定位(Search Engine Positi ...

  8. 网站优化(SEO)的10大误区

    前段时间大前端也有关于SEO的文章贡献给广大读者,今日,再发一文,网站优化(SEO)的10大误区.很多新手站长初次接触SEO,感受到SEO 的无穷魅力,想要做一位优秀的SEOer,然而新手朋友在进行S ...

  9. Asp.net网站优化【转】

    阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...

随机推荐

  1. WPF/Silverlight中的RichTextBox总结

    WPF/Silverlight中的RichTextBox总结   在WPF或者是在Silverlight中有个非常强大的可以编辑的容器控件RichTextBox,有的时间会采取该控件来作为编辑控件.鉴 ...

  2. iOS网络通信http之NSURLConnection

    iOS网络通信http之NSURLConnection 移动互联网时代,网络通信已是手机终端必不可少的功能.我们的应用中也必不可少的使用了网络通信,增强客户端与服务器交互.这一篇提供了使用NSURLC ...

  3. Lucene.net入门学习系列(2)

    Lucene.net入门学习系列(2) Lucene.net入门学习系列(1)-分词 Lucene.net入门学习系列(2)-创建索引 Lucene.net入门学习系列(3)-全文检索 在使用Luce ...

  4. 用aspx文件作为模板

    用aspx文件作为模板 首先申明:标题中的如果是可以去掉的. 想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等, ...

  5. 为outlook增加“邮件召回”功能

    outlook 2007开始软件自带邮件召回功能.2003版本没有,可惜此版本盗版最厉害,用户很广,这次项目中用户分布很广,其中outlook2003版本用户数甚多,达到397人. 不可能让他们新装2 ...

  6. 三千万数据量下redis2.4的一统计情况

    先说一下工作场景,要求做一个服务,满足:处理千万级别数据,单个请求响应时间在20ms以下.由于是存储的数据格式为key:list[],所以很适合使用redis来存放数据,为了测试一下redis存储的效 ...

  7. IPC之消息队列详解与使用

    一.    概念 消息队列就是一个消息的链表.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权限的进程可以从消息队列中读出消息.消息队列是随内核持续的.下面介绍三个概念: ...

  8. 横瓜先生关于如何利用MYSQL数据库设计CMS系统处理100亿级TB规模的数据量

    遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个字段就算用索引,也需要扫描至少100w以上记录. 横瓜(601069289)  1 ...

  9. 菜单工具栏wxPython菜单与工具栏基础示例

    这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...

  10. 我是实践派之mongo的一主多从

    mongo一主多从 为什么要做一主多从? mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力. 主节点用 ...