不可不知的 WEB 前端网站优化 —— 雅虎 34 条军规

不得不说现在依然适用于大部分的网站

当年雅虎推荐了一套优化网站加载速度的34条法则(包括Yslow规则22条),以下是详细说明。

1. Minimize HTTP Requests 减少 HTTP 请求

图片、cssscriptflash 等等这些都会增加 http 请求数,减少这些元素的数量就能减少响应时间。把多个JSCSS在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进CSS里,利用 CSS sprites 将小图拼合后利用background来定位。

2. Use a Content Delivery Network 利用CDN技术

CDN 确实是好东西,8过服务器提供商的这项服务一般是要收费的,我以前买的国内空间是有这个的但是我当时根本不知道啥用,现在没了。。。

3. Add an Expires or a Cache-Control Header 设置头文件过期或者静态缓存

浏览器会用缓存来减少http请求数来加快页面加载的时间,如果页面头部加一个很长的过期时间,浏览器就会一直缓存页面里的元素。不过这样如果 页面里的东西变动的话就要改名字了,否则用户端不会主动刷新,看自己衡量了~ 这项可以通过修改.htaccess文件来实现。

4. Gzip Components Gzip 压缩

Gzip格式是一种很普遍的压缩技术,几乎所有的浏览器都有解压Gzip格式的能力,而且它可以压缩的比例非常大,一般压缩率为85%。压缩没压缩,可以到 这里 做下测试。

5. Put Stylesheets at the Top 把 CSS 放顶部

让浏览者能尽早的看到网站的完整样式。

6. Put Scripts at the Bottom 把 JS 放底部

网站呈现完毕后再进行功能设置,当然这些JS要在你的加载过程中不影响内容表现。

7. Avoid CSS Expressions 避免CSS Expressions

CSS表达式很可怕,这个只被IE支持的东西执行时候的运算量非常大,你移动一下鼠标它都要进行重计算的,但有时候为了做浏览器的兼容必须要用到这个||| IE6去死去死!

8. Make JavaScript and CSS External 将 JS 和 CSS 外链

前面讲到了缓存这个事情,一些较为公用的JSCSS,我们可以使用外链的形式,譬如我就是从Google外链来的Jquery文件,如果我的浏览者在浏览别的使用了这个外链文件的网站时已经下载并缓存了这个文件,那么他在浏览我的网站的时候就不需要再进行下载了!

9. Reduce DNS Lookups 减少 DNS 查找

貌似是要减少网站从外部调用资源,我的Google分析和picasa的外链图片都算在里面了。

10. Minify JavaScript and CSS 减小 JS 和 CSS 的体积

JSCSS都是有技巧的,用最少的代码实现同样的功能,减少空白,增强逻辑性,用缩写方式等等,当然也有不少工具也能够帮你实现这一点。

11. Avoid Redirects 避免重定向

再写入链接时,虽然 http://www.test.comhttp://www.test.com/ 仅有一个最后的 / 只差,但是结果是不同的,服务器需要花时间把前者重定向为后者然后进行跳转,这个要自己注意,也可以在Apache里用Alias 或者mod_rewrite或者DirectorySlash解决。

12. Remove Duplicate Scripts 删除重复脚本

重复调用的代码浏览器并不会识别忽略,而是会再次运算一遍,这当然是大大的浪费。

13. Configure ETags 配置 ETags

搞不清楚咋回事,总之我是在.htaccess里把它删除了。

14. Make Ajax Cacheable 缓存 Ajax

Ajax是实时响应的,在浏览器接收到新的数据前,旧的数据被缓存,这样能够更好的提高效率。

15. Flush the Buffer Early 尽早的释放缓冲

当用户进行页面请求时,服务器端需要花费200500毫秒时间来拼合HTML,将写在headbody之间,释放缓冲,这样可以将文件头先发送出去,然后再发送文件内容,提高效率。

16. Use GET for AJAX Requests 用 GET 方式进行 AJAX 请求

Get 方法和服务器只有一次交互(发送数据),而 Post 要两次(发送头部再发送数据)。

17. Post-load Components 延迟加载组件

最先加载必须的组件进行页面初始化,然后再加载其他,YUI Image Loader 是很好的例子。

18. Preload components 预加载组件

提前加载以后可能用到的东西,和延迟加载并不冲突,它的目的是为后续请求提供更快的响应,参见 Google 首页上的CSS sprites应用。

19. Reduce the Number of DOM Elements 减少 DOM 元素数量

复杂的页面结构意味着更长的下载及响应时间,更合理更高效的使用标签来架构页面,是好的前端的必备条件。

20. Split Components Across Domains 跨域分离组件

页面组件多个来源可以增大你的平行下载量,但注意不要过多,超过2-4个域名会引起上面说到的DNS查找浪费。

21. Minimize the Number of iframes 减少 iframe 数量

需要更有效的利用 ifamesiframe 优点:有利于下载缓慢的广告等第三方内容,安全沙箱,并行下载脚本 iframe 缺点:即使为空也会有较大资源消耗,会阻止页面的onload,非语义。

22. No 404 不要出现 404 页面

站点本身里(非搜索结果)出现404页面,无意义的404页面会影响用户体验并且会消耗服务器资源。

23. Reduce Cookie Size 减小 Cookie

Cookie在服务器及浏览器之间的通过文件头进行交换,尽可能减小Cookie体积,设置合理的过期时间,能够很好的提高效率。

24. Use Cookie-free Domains for Components 对组件使用无 Cookie 的域名

对静态组件的Cookie读取是一种浪费,使用另一个无Cookie的域名来存放你的静态组件式一个好方法,或者也可以在Cookie中只存放带www的域名。

25. Minimize DOM Access 减少 DOM 的访问次数

JS访问DOM是很慢的,尽量不要用JS来设置页面布局。

26. Develop Smart Event Handlers 开发灵活的事件处理句柄

DOM树上过多的元素被加入事件句柄的话,反应效率肯定会低,YUI事件工具有一个 onAvailable 方法可以帮助你灵活的设置DOM事件句柄

27. Choose <link> over @import 使用 <link> 而非 @import

IE中使用@import就和在页面底部用<link>一样,我们前面说要把<link>放顶部的。

28. Avoid Filters 避免过滤器的使用

如果需要Alpha透明,不要使用AlphaImageLoader,它效率低下而且只对IE6及以下的版本适用,用PNG8图片。如果你非要使用,加上_filter以免影响IE7+用户。

29. Optimize Images 优化图片

将你的GIF转为PNG8会是个减小体积的好办法,另外有很多方法处理你的JPGPNG图片以达到优化效果。

30. Optimize CSS Sprites 优化 CSS Sprites

CSS Sprites中竖直并尽量紧凑的排列图片,尽量将颜色相似的图片排在一起,会减小图片本身的大小及提高页面图片显示速度。

31. Don’t Scale Images in HTML 不要在HTML中缩放图片

图片要用多大的就用多大的,1000X1000的图片被width=”100″ height=”100″以后,本身的KB数是不会减少的。

32. Make favicon. ico Small and Cacheable 缩小 favicon. ico 的大小并缓存它

站点的浏览器ICO应该不是经常换吧,那就长时间的缓存它,并且最好控制在1K以下。

33. Keep Components under 25K 保证组件在 25K 以下

iPhone不能缓存25K以上的组件,并且这还是要在被压缩前。

34. Pack Components into a Multipart Document 将组件打包进一个多部分的文档中

就好像在邮件中加入附件一样,一个HTTP请求就够了,但是这一技术需要确保你的代理支持,iPhone 就不支持。

关注我,下一篇介绍

《使用 Chrome 开发者工具 performance 检测页面性能》

前端flv.js设置缓冲时间和大小_不可不知的 WEB 前端网站优化 —— 雅虎 34 条军规...相关推荐

  1. 前端flv.js设置缓冲时间和大小_好程序员web前端细解cookie那些事

    好程序员web前端细解cookie那些事,在互联网时代,IT行业飞速发展,带动了web前端开发行业的兴趣.由于行业新兴起时间不久,专业人才缺乏,薪资待遇较高,已成为众多IT学子选择就业的首选,今天就为 ...

  2. js 设置视频的音量大小

    js 设置视频的音量大小 setVolume(v) {// 自定义控制音量if (document.querySelector(`video`)) {try {const volumeAdio = d ...

  3. 雅虎前端优化的35条军规

    阅读目录 内容部分 css部分 js部分 javascript, css 图片 cookie 移动端 服务器 摘要:无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要 ...

  4. 【前端优化】雅虎前端优化的35条军规(存档备用)

    目录 内容部分 css部分 js部分 javascript, css 图片 cookie 移动端 服务器 摘要:无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪 ...

  5. web前端开发基础知识_薪资30K+的web前端怎么做到的?

    好的web前端年薪会有多少?首先,我们要知道怎么才能成为一个所认为的"好的web前端",其次,自己能值多少价值? 用户体验为王,是互联网时代的座右铭.人们在享受互联网带来的便捷的同 ...

  6. Java和Web前端谁的薪资待遇高?网友:我要学Web前端!

    Web前端和Java谁的薪资待遇高?关于这个问题,是很多网友都感兴趣的,笔者也收到了不少类似的问题. 现在的互联网行业飞速发展,因此很多小伙伴想要进入IT行业分一杯羹,但是关于学习什么技术还有不少的小 ...

  7. (直播、监控)利用javacv解析rtsp流,转换为flv流,通过前端flv.js解析播放

    前情提要:之前利用websocket解析过https://blog.csdn.net/IT_CREATE/article/details/105625858?spm=1001.2014.3001.55 ...

  8. js 设置当前时间的后20分钟、后一小时、前一天等等相对时间

    不管是设置相对当前时间有多久时间差的时间,统一思路为:先获取当前时间的时间戳,再根据需求加减时间获得新的时间戳,然后取年月日与时分秒.实例如下: // 设置默认时间--先转化为毫秒数,加上 20 分钟 ...

  9. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...

    好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...

最新文章

  1. 本地windows上传大文件到Linux服务器工具的选择以及使用方法
  2. .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
  3. ConcurrentHashMap源码jdk1.8学习笔记
  4. cassandra使用心得_使用Spring Data Cassandra缓存的预备语句
  5. android tcp判断服务器是否断开,Android tcp客户端连接,然后从java服务器断开连接...
  6. java io 视频 下载_Java下载映客主播视频回放到电脑硬盘
  7. 并发场景下的幂等问题——分布式锁详解
  8. 几款优秀的点播、RTSP/RTMP直播播放器介绍
  9. Spring的beans标签下可以有其他标签
  10. 数据隐私和数据分享_对数据隐私持开放态度
  11. express学习 - (1)环境配置与第一个express项目
  12. ORACLE 日期转换
  13. 五个最佳RSS新闻阅读器
  14. linux系统管理考试试题及答案,《Linux系统管理》期末综合试题答案.doc
  15. ringbuffer java例子_Java RingBuffer.publish方法代碼示例
  16. js:进制转换、保留指定位数小数、RGB/Hex颜色色值转换
  17. 4 Debezium抽取部署
  18. 离散型随机变量-Discrete Random Variables
  19. Oracle 执行计划(Explain Plan)
  20. Python凯撒密码解密

热门文章

  1. 【MySQL】MySQL 两种排序算法
  2. vertx:Flink报错 严重: Caught unexpected Throwable IllegalAccessError: tried to access class io.netty.uti
  3. dubbo-admin的编译安装
  4. MyBatis知识点学习
  5. Oracle用户和模式的区别
  6. FastDFS介绍并在centos7中安装
  7. ubuntu19.04安装pip3以及virtualenv和virtualenvwrapper
  8. Java设计模式-设计模式概述
  9. Java基础-Collection集合接口(List及Set)
  10. Java开发人员常用网站收录