雅虎的Web优化最佳实践

1.  内容优化

  • 尽量减少HTTP请求:常见方法包括合并多个CSS文件和JavaScript文件,利用CSS Sprites整合图像,Image map(图像中不同的区域设置不同的链接),内联图象(使用  data: URL scheme 在实际的页面嵌入图像数据)等。
  • 减少DNS查找
  • 避免重定向
  • 使Ajax可缓存
  • 延迟加载组件:考虑哪些内容是页面呈现时所必需首先加载的、哪些内容和结构可以稍后再加载,根据这个优先级进行设定。
  • 预加载组件:预加载是在浏览器空闲时请求将来可能会用到的页面内容(如图像、样式表和脚本)。当用户要访问下一个页面时,页面中的内容大部分已经加载到缓存中了,因此可以大大改善访问速度。
  • 减少DOM元素数量:页面中存在大量DOM 元素,会导致JavaScript遍历DOM的效率变慢。
  • 根据域名划分页面内容:把页面内容划分成若干部分可以使你最大限度地实现平行下载。但要确保你使用的域名数量在2个到4个之间(否则与第2条冲突)。
  • 最小化iframe的数量:iframes 提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但其创建速度比其他包括JavaScript和CSS的DOM元素的创建慢了1-2个数量级。
  • 避免404:HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。

2. 服务器优化

  • 使用内容分发网络(CDN):把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。
  • 添加Expires或Cache-Control信息头:对于静态内容,可设置文件头过期时间Expires的值为“Never expire(永不过期)”;对于动态内容,可使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求。
  • Gzip压缩
  • 设置ETag:ETags(Entity tags,实体标签)是web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。
  • 提前刷新缓冲区: 当用户请求一个页面时,服务器会花费200到500毫秒用于后台组织HTML文件。在这期间,浏览器会一直空闲等待数据返回。在PHP中,可以使用 flush()方法,它允许你把已经编译的好的部分HTML响应文件先发送给浏览器,这时浏览器就会可以下载文件中的内容(脚本等)而后台同时处理剩余的 HTML页面。
  • 对Ajax请求使用GET方法:当使用XMLHttpRequest时,浏览器中的POST方法会首先发送文件头,然后才发送数据。因此使用GET最为恰当。
  • 避免空的图像src

3. Cookie优化

  • 减小cookie大小:去除不必要的coockie,并使coockie体积尽量小以减少对用户响应的影响
  • 针对Web组件使用域名无关的Cookie:对静态组件的Cookie读取是一种浪费,使用另一个无Cookie的域名来存放静态组件是一个好方法,或者也可以在Cookie中只存放带www的域名。

4. CSS优化

  • 将CSS代码放在HTML页面的顶部
  • 避免使用CSS表达式:CSS表达式在执行时候的运算量非常大,会对页面性能产生大的影响
  • 使用<link>来代替@import
  • 避免使用Filters:IE独有属性AlphaImageLoader用于修正IE 7以下版本中PNG图片的半透明效果,但它的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。

5. JavaScript优化

  • 将JavaScript脚本放在页面的底部
  • 将JavaScript和CSS作为外部文件来引用:在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。
  • 缩小JavaScript和CSS
  • 删除重复的脚本
  • 最小化DOM的访问:使用JavaScript访问DOM元素比较慢
  • 开发智能的事件处理程序

6. 图像优化

  • 优化图片大小
  • 通过CSS Sprites优化图片
  • 不要在HTML中使用缩放图片
  • favicon.ico要小而且可缓存

7. 针对移动优化

  • 保持组件大小在25KB以下:主要是因为iPhone不能缓存大于25K的文件(注意这里指的是解压缩后的大小)。
  • 将组件打包成为一个复合文档:把页面内容打包成复合文本就如同带有多附件的Email,它能够使你在一个HTTP请求中获取多个组件。

更多信息:http://developer.yahoo.com/performance/rules.html(中文翻译)

转载于:https://www.cnblogs.com/FineDay/articles/3553913.html

雅虎的Web优化最佳实践相关推荐

  1. Web前端优化最佳实践及工具集锦

    摘要:前端的性能对于Web应用的用户体验来说非常重要.不要以为你的Web应用的性能已经足够好了,其实还会有很多可以提升的地方.本文将介绍Google和雅虎关于前端优化的最佳实践以及工具,你可以逐一检验 ...

  2. Web前端优化最佳实践及工具集锦(如减少页面加载时间)

    前端的性能对于一个Web应用来说非常重要,如果一个Web应用的页面加载速度非常快.对于用户的操作可以及时响应,那么产品的用户体验将会极大地提升.下图显示了页面加载速度对于用户体验的影响. 你的Web页 ...

  3. Web前端优化最佳实践

    一.Web 前端优化最佳实践之内容篇 Yahoo! 的 Exceptional Performance team 在 Web 前端方面作出了卓越的贡献.广为人知的优化规则也由 13 条到 14 条,再 ...

  4. 高性能网站建设进阶指南:Web开发者性能优化最佳实践 pdf扫描版

    高性能网站建设进阶指南:Web开发者性能优化最佳实践是<高性能网站建设指南>姊妹篇.作者Steve Souders是Google Web性能布道者和Yahoo!前首席性能工程师.在本书中, ...

  5. 前端性能优化最佳实践(转)

    转载请注明: 转载自WEB前端开发(www.css119.com)-关注常见的WEB前端开发问题.最新的WEB前端开发技术(webApp开发.移动网站开发).最好的WEB前端开发工具和最全的WEB前端 ...

  6. 软件性能优化最佳实践

    软件性能优化最佳实践 (作者:a_yu) 1 经验总结 1.1 应用程序设计优化 大业务量数据存储设计建议 当系统中业务数据量较大时,避免业务变更的历史数据和正式的业务数据同时存储,由于业务新增的数据 ...

  7. 前端性能优化最佳实践

    本文主要考量客户端性能.服务器端和网络性能,内容框架来自 Yahoo Developer Network,包含 7 个类别共 35 条前端性能优化最佳实践,在此基础上补充了一些相关或者更符合主流技术的 ...

  8. RESTful JSON Web服务最佳实践

    本文讲的是RESTful JSON Web服务最佳实践,[IT168 资讯]Collaxa BPEL产品-后来成为Oracle SOA战略核心的一部分-背后的关键人物之一,Edwin Khodabak ...

  9. RDS MySQL空间优化最佳实践

    在前三期介绍了RDS for MySQL参数优化,锁问题以及延迟优化最佳实践之后,本期将介绍存储空间相关的最佳实践.存储空间是RDS很重要的一个指标,在RDS的工单问题中,空间问题的咨询可以排在top ...

最新文章

  1. 受用一生的高效 PyCharm 使用技巧(四)
  2. 警惕!油性混合皮肤护理的误区 - 健康程序员,至尚生活!
  3. 华为vrrp默认优先级_华为eNSP配置VRRP协议实验
  4. 关于网狐棋牌6603源码的整理、编译和搭建
  5. bzoj千题计划282:bzoj4517: [Sdoi2016]排列计数
  6. JMS之企业消息传送
  7. javascript 框架_每个JavaScript框架教程写的时间都超过5分钟
  8. leetcode - 712. 两个字符串的最小ASCII删除和
  9. 高甜预警|甜齁你的情人节促销海报设计模板
  10. android 水晶按钮样式
  11. Android:插值器(Interpolator)和估值器(TypeEvaluator)的理解和使用
  12. 兼容ETA4056带OVP带电池反接保护和NTC小封装DFN2*2-8线性锂电池充电芯片
  13. 程序启动,遇到Process finished with exit code 1 解决方法
  14. pycharm设置项目编码
  15. postgresql 密码修改,忘记密码进行修改重置
  16. PPT制作网格型封面页实例教程
  17. 孤岛危机 教程:使用Voxel技术创建地形
  18. 电脑突然经常死机?(ubuntu系统如何检查原因)
  19. kettle_Day4_Hop的作用
  20. 飘易关键字排名批量查询工具分享!

热门文章

  1. printf 命令详解
  2. LipNet与ICLR评委互怼始末:名气大又怎样,还不是被拒绝了
  3. css撑起父元素清除浮动的问题
  4. OpenCV异常问题(一)
  5. CentOS 6.7安装python3.5
  6. Sub-process /usr/bin/dpkg returned an error code (1)
  7. 线程退出【Linux学习】pthread_create主线程与创建的新线程之间退出关系
  8. C#winform listbox多选的取值,采用DataRowView
  9. 和plc哪个简单点_怎么看PLC梯形图
  10. ANSYS Motion 2020 R2中文版