雅虎前端优化14准则

雅虎前端优化14准则

1.尽可能使用少的HTTP请求MakefewerHTTPrequests; 

  这个是很重要的一条,具体措施是使用Imagemaps 和InlineImages;合并CSS和脚本代码。比如对于ImageMaps 
(服务器端)server-side 
→http://…/navbar.cgi?127,1

大家好,又见面了,我是你们的朋友全栈君。

1.尽可能使用少的HTTP请求 Make fewer HTTP requests; 

    这个是很重要的一条,具体措施是使用Image maps  和Inline Images;合并CSS和脚本代码。比如对于Image Maps 
(服务器端)server-side 
<a href=”navbar.cgi”> <img ismap src=”imagemap.gif”> </a>→ http://…/navbar.cgi?127,13 
(客户端)client-side – preferred 
<img usemap=”#map1″ border=0 src=”http://images.cnblogs.com/imagemap.gif”> 
<map name=”map1″>  <area shape=”rect” coords=”0,0,31,31″ href=”home.html” title=”Home”> 
  … 
</map> 
(缺点是)drawbacks: 
图片需要是连续的。 

2.使用内容分发网络 Use a CDN; 
  在发布你的动态内容之前发布网站的静态内容,比如使用广泛的Akamai 
3.增加一个期限头部 Add an Expires header 
  不仅仅是对图片设置,对于脚本和样式表同样需要设置,在Apache中具体的配置方法如下: 
    ExpiresActive On 
    ExpiresByType application/x-javascript “modification plus 2 years” 
    ExpiresByType text/css “modification plus 5 years” 
当你修改一个资源的时候,修改资源的名称(自动进行),给文件名称加一个时间戳,例如img_1385413733.png; 
同时候将资源纳入版本控制系统中,比如使用CVS个SVN,例如img_1.2.png。 

4.压缩组件Gzip components 
  当前90% 的浏览器都支持压缩,压缩不仅仅是指HTML,脚本,CSS和XML都可以压缩。 
在Apache中修改下面的配置来支持压缩 
Apache 2.x: mod_deflate 
AddOutputFilterByType DEFLATE text/html text/css application/x-javascript 
对于HTTP请求和响应,表现如下 
HTTP request: Accept-Encoding: gzip, deflate 
HTTP response: Content-Encoding: gzip Vary: Accept-Encoding 

5.将CSS置为页面的顶部 Put CSS at the top 
  主要原因是CSS样式表会阻塞HTML在IE中的显示(如果没有下载完的话)


6.将JS移植页面的底部 Move JS to the bottom 
  主要原因是脚本的执行会阻塞并行下载和阻塞其他元素在IE中的展示


7.避免使用CSS表达式 Avoid CSS expressions 

比如下面的例子: 

  width: expression( 

        document.body.clientWidth < 600 ? 

      “600px” : “auto” ); 

原因是由于鼠标的移动,按下键等操作事件会是的上述表达式执行多次  

8. 是JS和CSS从外部包含  Make JS and CSS external 

  可以减少HTML文档的大小,同时增加脚本的重用,但是会增加请求数 

但是HomePage是一个例外,在Homepage中使用Inline和 PostOnload效果不错,yahoo和goolgede 

首页都这样处理了; 

9.减少DNS的查找 Reduce DNS lookups 

  一个典型的DNS查询是20-120ms,DNS 查询的时间直接影响到并行下载的效率,尽量减少主机的域名数目。 

常用浏览器的缓存时间设置如下: 

IE 

DnsCacheTimeout: 30 minutes 

KeepAliveTimeout: 1 minute 

ServerInfoTimeout: 2 minutes 

Firefox 

network.dnsCacheExpiration: 1 minute 

network.dnsCacheEntries: 20 

network.http.keep-alive.timeout: 5 minutes 

Fasterfox: 1 hour, 512 entries, 30 seconds 

10.精简JS Minify JS 

  这个主要涉及到JS的编码和优化 

11.避免重定向 Avoid redirects 

  通常Web服务器返回的是3XX的状态码,常常是301和302,可以通过添加过期头来缓存重定向; 

12. 移除重复的脚本 Remove duplicate scripts 

    统计数剧表明20%的网站存在重复的脚本文件,这将直接影响HTTP请求的性能  

13.关闭ETags功能 Turn off ETags 

    Web服务器返回的实体的唯一标识,主要应用在有条件的Get请求中。 

    ETag: “c8897e-aee-4165acf0” 

    Last-Modified: Thu, 07 Oct 2004 20:54:08 GMT 

    If-None-Match: “c8897e-aee-4165acf0” 

  If-Modified-Since: Thu, 07 Oct 2004 20:54:08 GMT 

如果ETags不匹配,就不能发送304码,对于服务器之间一个单独的实体的ETag总是不同的。在Server和Client的格式分别 

如下: 

  Apache: inode-size-timestamp 

  IIS: Filetimestamp:ChangeNumber 

对于服务器多余一台机器的Site,很少返回304状态码。 

14.是AJAX代码可缓存同时经可能小 Make AJAX cacheable and small 

  XHR, JSON, iframe, 动态脚本 都是可以被缓存, 精简和压缩的:a personalized response should still be cacheable by that person。比如在Yahoo! Mail Beta中,由于XML标示的地址本是不会经常变动的,可以缓存它,将最后修改时间标记在URL中。 

Web性能分析工具 

1。IBM Page Detailer  详细信息参考:http://alphaworks.ibm.com/tech/pagedetailer 

2。Fasterfox 是Firefox的一个插件,可以详细统计一个网页的载入时间,http://fasterfox.mozdev.org/ 

3。LiveHTTPHeaders 是Firefox的一个插件,可以查看HTTP请求头  http://livehttpheaders.mozdev.org/ 

4。firebug 是Firefox的一个插件, 功能强大,可以多JS和CSS做分析 http://getfirebug.com/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159798.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月15日 上午9:00
下一篇 2022年7月15日 上午9:00


相关推荐

  • vue常用组件库_vue内置组件

    vue常用组件库_vue内置组件目录前言一、Vue.jsUI组件二、Vue.js开发框架三、Vue.js实用库四、Vue.js服务端五、Vue.js辅助工具六、Vue.js应用实例七、Vue.jsDemo示例八、详细分类01、UI组件及框架02、滚动scroll组件03、slider组件04、编辑器05、图表06、日历07、地址选择08、地图09、播放器10、文件上传11、图片处理12、提示13、进度条14、开发框架汇总15、实用库汇总

    2025年5月26日
    4
  • MVP模式使用示例详解

    MVP模式使用示例详解什么是 MVP 模式 amp nbsp amp nbsp amp nbsp amp nbsp amp nbsp 这个 MVP 可不是腾讯游戏 王者荣耀 中的 MVP 我们今天要讨论的 MVP 其实同 MVC 一样 是一种编程模式和思想 也许更准确地讲是一种架构 amp nbsp MVP 和 MVC 的区别 amp nbsp

    2026年3月20日
    1
  • verilog实现矩阵卷积运算

    verilog实现矩阵卷积运算verilog 实现卷积运算卷积的运算原理卷积是一种线性运算 是很多普通图像处理操作的基本算法之一 它提供了两个数组相乘的方式 两个数组拥有不同的大小 但是具有相同的维数 生成了一个用于相同维数的新数组 可以用来图像的执行操作 输入一组特定的像素值线性组合成为另一组像素值 在图像处理中常见的 msk 运算都是卷积 广泛应用于图像滤波 1 1 卷积出现的背景卷积是在信号与线性系统的基础或背景中出现的

    2026年3月16日
    2
  • 吐血整理!java面试中经常被问到的问题「建议收藏」

    吐血整理!java面试中经常被问到的问题「建议收藏」主备同步的实现原理我们先来了解一下主备同步的原理,下面以一个update语句来介绍主库与备库间是如何进行同步的。上图是一个update语句在节点A执行,然后同步到节点B的完整流程图,具体步骤有:主库接受到客户端发送的一条update语句,执行内部事务逻辑,同时写binlog。备库通过changemaster命令,设置主库的IP、端口、用户名和密码,以及要从哪个位置开始请求binlog。这个位置包含文件名和偏移量。在备库上执行startslave命令,启动两个线程io_thread

    2022年7月9日
    40
  • 面试:精通Java;面试官:来讲一下JVM虚拟机内存模型的最底层原理,必须说详细说清楚,知其所以然。看完后,你还敢在简历上写精通Java吗?

    面试:精通Java;面试官:来讲一下JVM虚拟机内存模型的最底层原理,必须说详细说清楚,知其所以然。看完后,你还敢在简历上写精通Java吗?面试简历:精通Java和JVM面试官:来说说JVM虚拟机内存模型的最底层原理,必须说详细说清楚,达到知其所以然的目的。看完后你还敢在简历上写精通Java吗?

    2022年5月12日
    35
  • java实现编译器_实现一个简单的编译器

    java实现编译器_实现一个简单的编译器简单的说编译器就是语言翻译器,它一般将高级语言翻译成更低级的语言,如GCC可将C/C++语言翻译成可执行机器语言,Java编译器可以将Java源代码翻译成Java虚拟机可以执行的字节码。编译器如此神奇,那么它到底是如何工作的呢?本文将简单介绍编译器的原理,并实现一个简单的编译器,使它能编译我们自定义语法格式的源代码。(文中使用的源码都已上传至GitHub以方便查看)。自定…

    2022年7月7日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号