淘宝新首页开发实践

47
新新新新新新新 新新

description

 

Transcript of 淘宝新首页开发实践

Page 1: 淘宝新首页开发实践

新首页开发实践

云谦

Page 2: 淘宝新首页开发实践

一、 HTML 规范

Page 3: 淘宝新首页开发实践
Page 4: 淘宝新首页开发实践

<!doctype html>

• DOCTYPE 的作用– 怪癖模式的开关 ( )★– W3C 校验

• 为什么选择这种写法– 简单好记、长度短省流量– 兼容性 (IE 的”预见性” )

Page 5: 淘宝新首页开发实践

<meta charset=“gbk” />

<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

<meta charset="gbk" />

区别?mime-type 决定权

Page 6: 淘宝新首页开发实践

embed css & javascript

link[rel=“stylesheet”] 的 type 和 media 属性script 的 type 属性

默认值,没理由不省去

Page 7: 淘宝新首页开发实践

更多 HTML 规范,参见 http://wiki.ued.taobao.net/doku.php?id=f2e:html_guide

Page 9: 淘宝新首页开发实践

二、 Sprites

Page 10: 淘宝新首页开发实践

淘宝首页 Sprites

Page 11: 淘宝新首页开发实践

新浪首页 Sprites

Page 12: 淘宝新首页开发实践

“THE BIGGEST PROBLEM WITH CSS      SPRITES IS MEMORY USAGE.”

—— vladimir , a leader in the Mozilla community

Page 13: 淘宝新首页开发实践

http://www.wthitv.com/1299 * 15000

26K75MB+

w*h*(3-4)

Page 14: 淘宝新首页开发实践

我们的目标是:减少空白

Page 15: 淘宝新首页开发实践

用占位标签组织 Sprites

S : 39 处B : 42 处

废弃、安全、环保

Page 16: 淘宝新首页开发实践

优点:性能、工作效率、成就感缺点: DOM 数增加

用占位标签组织 Sprites

Page 17: 淘宝新首页开发实践

LOGO 融入 Sprites (?)

• 优点– 减少一个 HTTP 请求– 将 CSS Sprite 的请求排在最前面

• 缺点– 不可复制

• 问题– IE 渲染 PNG 的 BUG

Page 18: 淘宝新首页开发实践

Sprites 的拆分 (V1)

Page 19: 淘宝新首页开发实践

14K ?太大了吧!!

Page 20: 淘宝新首页开发实践

Sprites 的拆分 (V2)

Page 21: 淘宝新首页开发实践
Page 22: 淘宝新首页开发实践

Sprites 的拆分 (V3)

(5.8K)

(10.3K)

Page 23: 淘宝新首页开发实践
Page 24: 淘宝新首页开发实践

Sprites 的拆分• 怎么拆?– 突击队(数据层,影响操作的展现层)– 大部队(不影响操作的展现层)

• 没有完美的方案

Page 26: 淘宝新首页开发实践

三、 Data-uri 应用

Page 27: 淘宝新首页开发实践

渐变背景的实现

IE : Filter

GECKO : -moz-linear-gradient (firefox 3.6(1.9.2))

WEBKIT : -webkit-gradient (safari 4.0(528))

Opera? Webkit 和 Gecko 的起始支持版本较高

Page 28: 淘宝新首页开发实践
Page 29: 淘宝新首页开发实践

短期功能的背景图

Sprites 缓存、图片变更可能性小

Page 30: 淘宝新首页开发实践

ref

• http://search.yahoo.com ( 搜索按钮 )

Page 31: 淘宝新首页开发实践

四、 HTTP 请求队列的控制

Page 32: 淘宝新首页开发实践

最先加载 Sprites

Page 33: 淘宝新首页开发实践

最先加载 Sprites

• 解决方案:优先发送 Sprites 图片请求– new Image().src = “”; ( 位置 ?)– <div id=“logo”><img src=“” /></div>

Page 34: 淘宝新首页开发实践

#feedback-entry VS. #feedback-entry a

需求:默认隐藏, domready 时判断窗口尺寸决定是否显示

结构:<div id=“feedback”><a> 新首页反馈 </a></div>

Page 35: 淘宝新首页开发实践

#feedback-entry VS. #feedback-entry a

Page 36: 淘宝新首页开发实践

#feedback-entry VS. #feedback-entry a

Page 38: 淘宝新首页开发实践

五、延时加载 / 渲染 / 执行

Page 39: 淘宝新首页开发实践

• 延时加载– 屏幕外的图片

• 延时渲染 (textarea)– 屏幕外的 DOM 结构– 隐藏 Tab 的 DOM 结构

• 延时执行– P4P 数据请求函数

Page 40: 淘宝新首页开发实践
Page 41: 淘宝新首页开发实践

六、其他细节

Page 42: 淘宝新首页开发实践

CSS 的阴影#4f9999990% - 005% - 0d10% - 1a15% - 2620% - 3325% - 4030% - 4d35% - 5940% - 6645% - 7350% - 8055% - 8c60% - 9965% - a670% - b375% - bf80% - cc85% - d990% - e595% - f2100% - ff

Page 43: 淘宝新首页开发实践

CSS 的图片旋转

• 注意: IE6 下BasicImage 不支持非图片元素

Page 44: 淘宝新首页开发实践

异步获取数据的容灾处理• 我的淘宝数据• 广告数据

Page 45: 淘宝新首页开发实践

纠正:数据图片大小并不影响页面初始载入速度和 Yslow 评分

Page 47: 淘宝新首页开发实践

云谦[email protected]

http://www.chencheng.org