yahoo给出的关于网站优化的建议
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给出的关于网站优化的建议的更多相关文章
- Java Web 高性能开发,第 3 部分: 网站优化实战
这个系列的前两篇,介绍了前端的优化技术,这些技术秉承了前人至高无上的智慧,我只是负责吸收和传播.然而,这些技术一般也都是某某大型网站的技术经验,我们大部分人或许只能接触到相对小规模的网站,小规模的网站 ...
- web网站优化
没事儿研究一下YAHOO工程师对网站优化给出的策略,对重点部分在这儿做下笔记 -----------------------------------------------我是分割线--------- ...
- ASP.NET网站优化(转自一位博友的文章,写的非常好)
不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...
- 【IIS】 网站优化
[IIS] 网站优化 一. 从硬件入手,升级服务器的cpu,内存,硬盘 这是成本最低的方法,所以如果要优化,请先考虑下现有服务器的硬件能力是不是满足要求. 二. 从数据库入手 索引: 检查该建的索引建 ...
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...
- 怎么通过网站优化来增强SEO效果?
真正好的网站优化不应该针对哪一个搜索引擎,而应该关注用户的需求.搜索引擎把这这用户指标权重提升,实际上也是希望把更多的精力集中在用户体验的提升上面.那么,这些用户指标应该怎样提升呢?方法多种多样,下面 ...
- 网站优化不等于搜索引擎优化SEO
对于SEO相信搞网络营销的人基本上都知道这个名词,英文全称为search engine optimization,中文一般叫搜索引擎优化,也有的叫搜索引擎定位(Search Engine Positi ...
- 网站优化(SEO)的10大误区
前段时间大前端也有关于SEO的文章贡献给广大读者,今日,再发一文,网站优化(SEO)的10大误区.很多新手站长初次接触SEO,感受到SEO 的无穷魅力,想要做一位优秀的SEOer,然而新手朋友在进行S ...
- Asp.net网站优化【转】
阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...
随机推荐
- selenium webdriver (python)
selenium webdriver (python) 第一版PDF Posted on 2013-08-30 22:59 虫师 阅读(221) 评论(0) 编辑 收藏 前言 如果你是一位有pytho ...
- css中display的属性解析
display 属性规定元素应该生成的框的类型. 他有很多属性值,见如下表格: none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会 ...
- 原生javascript-图片按钮切换
原生javascript-图片按钮切换 即上次被分配写原生JS相册弹窗后,这次又接到了写原生JS,图片按钮切换,真激情: 个人在线实例:http://www.lgyweb.com/picSwitch/ ...
- 64位CentOS 6.0下搭建LAMP环境
系统环境:Centos6.0 x64 1.确认搭建LAMP所需要的环境是否已经安装 [root@centos6 ~]# rpm -q make gcc gcc-c++ zlib-devel libai ...
- HDU 2076 夹角有多大(题目已修改,注意读题)
Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少.现在xhd知道的只有时间,请你帮他算出 ...
- Python 3语法小记(五)字符串
Python 3 的源码的默认编码方式为 UTF-8 在Python 3,所有的字符串都是使用Unicode编码的字符序列. utf-8 是一种将字符编码成字节序列的方式.字节即字节,并非字符.字符在 ...
- Java Tips and Best practices to avoid NullPointerException
A NullPointerException in Java application is best way to solve it and that is also key to write rob ...
- 如何发布一个自定义Node.js模块到NPM(详细步骤)
咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...
- Hibernate缓存配置
一级缓存 Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法 及调用查询接口l ...
- 解决安装失败的 Internet Explorer 11
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成.微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章.然而由机器翻译的文章并不总是完美的.它 ...