锁定老帖子 主题:批一批淘宝首页的源代码
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-09
最后修改:2009-04-09
淘宝UED团队经常写一些很棒的技术文章,令我印象深刻的有一句话,大意如下:
引用 虽然这种方法比较hack,但是可以减少2个HTML标签,考虑到我们是做超大流量的互联网应用,这样可以节省大量的带宽
可是打开淘宝首页,查看源代码,从大流量互联网应用来看,有很多地方可以批一批: 1. 内嵌大量的CSS/JS代码(CSS 25K/JS 18K左右),浪费大量的带宽,除了一些经常会变动的代码,完全可以将大部分内容移到外部css/js文件,客户端可以享受到文件缓存带来的好处,减少带宽。 2. 使用了<base target="_blank" />,默认所有的链接都在新窗口打开,可是还有很多链接指定了target="_blank",浪费带宽。 3. 源代码里面使用了大量的HTML注释,如果是自动生成的还情有可原,但是这些"<!--搜索框结束-->", "<!--广告轮播-->" 完全是属于给开发人员看的,甚至连"<!--海外用户特殊对待,yuyin,2009-03-05-->"这种属于版本控制的注释都丢上来了,还是浪费带宽。这些完全可在发表到生产环境时通过脚本自动去除, 4. 一些细节,比如给很多元素加了ID,而这个ID既不用在css selector,又没有JS对它操作。 再比如在页面最下面用一个白色字体显示服务器id,而这个东西完全可以写成注释的方式,以节省html标签和相关的CSS代码。 淘宝的朋友,我知道你们在努力营造一个氛围:淘宝很重视技术,重视细节。可是这些东西怎么也不象是一个重视技术细节的团队搞出来的吧? ======答复分割线====== 醒来 写道 作为淘宝UED团队中的一员,我简单的说明一下: 1. 首页是淘宝的入口,PV非常高,服务器压力也大。“快”是第一位的用户体验。内嵌css和js就是为了减少对服务器的http请求数。原因有三: 1)根据研究,会有20%的用户是无缓存的情况下访问淘宝网,此时无法利用客户端缓存。2)减少http连接数可以减少服务器压力,同时减少无谓的http头信息的上传。3) gzip压缩会大量减少下载量。所以经过对比和权衡,我们选择内嵌css/js。 2. 首页是动态生成,有很多CMS维护的内容。很多时候超出我们的控制。我们正努力不断改善,增强控制能力。 3. 无谓的注释确实是应该删除的,不过注释也会减少跨团队之间的磨合成本。这也是一个权衡的过程。我们也在不断改善注释规范。 4. 试试Ctrl+A 1. 首页用内嵌css和js确实可以减少http请求,但是这会增加页面大小,如何取舍是需要用数据支持的: 内嵌的css/js在gzip之后也有8.6K大小,用外联的话多2个http header,因为走CDN服务器,所以没有cookie等头信息,通常1个js+1个css请求的头信息大小在0.5K左右,8.6K * 80% v.s 0.5K * 100%,对比和权衡是如何会选择后者呢? 至于说到"快",淘宝首页,已经有9个js, 3个css和100来个iframe/图片请求,用内嵌的方式减少2个http请求,有意义吗? Yahoo在首页也采用内嵌js/css,但是它只有3个js, 0个css,和20多个图片请求,这种对比下,用内嵌对于用户体验才算得上改善。 3. 我不是说不写注释,而是指发布到服务器的时候用脚本清理一下,一个正则表达式就可以替换掉了。 4. Ctrl+A能够让用户看到最下面的服务器编号,可是这有什么用途? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-09
他们有的是钱买带宽,根本不在乎。
|
|
返回顶楼 | |
发表时间:2009-04-09
公司做大了,这样才叫正常.
|
|
返回顶楼 | |
发表时间:2009-04-09
我觉得是管理问题,和技术无关
|
|
返回顶楼 | |
发表时间:2009-04-09
主要还是执行力和沟通的问题
|
|
返回顶楼 | |
发表时间:2009-04-09
有些事情估计是心有余力不足。。。
|
|
返回顶楼 | |
发表时间:2009-04-09
除了第一条可能需要改进下外,我觉得其它情况在实际情况中都是有原因的。
但如果再来看楼主引用的那段淘宝的话的话,就有点吹毛求疵下淘宝了。 |
|
返回顶楼 | |
发表时间:2009-04-09
淘宝是越做越烂了,没有必要都弄些“精英”来改页面。
以淘宝今天的势力,搞个国内外包或越南外包的,把代码统统整一遍,绝对没问题,不差钱。 我做了多年外包,日本人对自己要求很松,但对中国人要求的那个变态,足以让这些问题不可能出现。 这里确实有执行力和开发策略的问题,这些问题,完全可以通过外包给比较低级的公司来解决,最好是包给外国人,中国人折磨中国人不和谐。 |
|
返回顶楼 | |
发表时间:2009-04-09
1 页面写写注释没多大关系,如果你真的在乎这个,干嘛不用页面压缩?像这种多人协作的前端,写注释是有好处的,曾经看过sohu也是
2 既不用在css selector,又没有JS对它操作的dom,加个id无妨,更规范 3 默认所有的链接都在新窗口打开,这个产品设计的范畴,可能别有用意 4 内嵌大量的CSS/JS代码,也不算是很严重的问题,只要前端人员能维护就可以了,放在外部独立出文件,会增加对服务器的请求 我胡扯的啊,别当真啊 |
|
返回顶楼 | |
发表时间:2009-04-09
最后修改:2009-04-09
yahoo首页的css和js也不是外部引用的。。。 这么做可能是基于版本控制和cdn 以及浏览器解释执行的原因(个人猜测)
其他几个我觉得到是可以避免。 |
|
返回顶楼 | |