Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
淘宝排行榜 V3 项目总结
Search
Frank Xu
September 01, 2010
Programming
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
淘宝排行榜 V3 项目总结
Frank Xu
September 01, 2010
More Decks by Frank Xu
See All by Frank Xu
Proxy Pattern
yyfrankyy
0
110
微信读书阅读器架构
yyfrankyy
2
2.3k
Watcher - EventBus Reinvented
yyfrankyy
0
180
SQLite 调优实践
yyfrankyy
0
200
FtnApp 的缩略图实践
yyfrankyy
0
110
JSDoc 的使用
yyfrankyy
0
210
交易平台化(前端)
yyfrankyy
0
230
淘宝搜索前端优化
yyfrankyy
0
250
Other Decks in Programming
See All in Programming
The Rails Doctrine Decade
koic
2
360
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
660
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
160
SREの越境 / SRE Collaboration
y0hgi
2
280
新卒PdEのリアル
ryu1013
1
510
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
530
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.3k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
17
15k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
3.2k
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
4.4k
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
530
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
We Are The Robots
honzajavorek
0
380
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
Building AI with AI
inesmontani
PRO
1
1.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Facilitating Awesome Meetings
lara
57
7.1k
Transcript
排⾏榜V3项⺫总结 ⽂河(@yyfrankyy) 2010-09
Agenda • 设计之初 • 前端“数据流” • 持续优化 • 开发和维护 •
下⼀步
设计之初 • 巨⼤的数据量 – 排序如此折腾 – ⼆级榜单*对应三级榜单*6种排序
None
如何应对? • 异步?这个必须有! • 设计(控制)瀑布图 • 维护⾃动化,使得持续优化成为可能 – 模块化+适当的脚本是⺫前最佳的解决⽅案 •
先做最重要的(80/20) – KISSY Loader使⽤调研 – 延迟请求本地实现,设计请求接⼝,约定延迟回调 – 完成部分基础样式,⼆级榜单模块 – 懒加载事件流,整合Loader,Switchable,优化滚动组件 – 继续完成其他内容,调教(戏)IE – 项⺫尾声,改Bug,持续重构 • 减少Hack,减少reflow的机会 • Loading细节优化 • 交互细节视觉细节完善
前端“数据流” • 瀑布图,把握每⼀个请求 – HTML,永远放在第⼀位(Render First) – 控制渲染顺序,把握展⽰的每⼀秒。 1. HEADER
2. 热榜 3. 其他榜单占位 4. 导航 5. ⻚尾 6. 实时成交(异步)
None
依赖延迟 • ⽤KISSY Loader解决依赖 • KISSY 1.1.5 – seed.js: lang,
loader – core.js: ua, dom, event, node, cookie, json, anim, attribute, base – kissy.js: seed.js + core.js • 基于KISSY,建⽴业务seed • seed控制加载,我们要可⻅加载(scrolload)
案例:实时成交模块 • 依赖:anim, switchable • 实现:ontime.js • 样式:ontime.css • 图⽚:scrollTrigger.png
• 数据:html⽚段
依赖关系
调⽤
瀑布图 • 全部并发
节点太多? • 减少HTML⼤⼩ – 集群内传输时间 – Gzip压⼒ – ⺴络传输时间 •
减少内存占⽤ – ⾸屏的渲染速度,分开整体的开销 – 滚动时的浏览器响应 – JavaScript: “the good looking girl that comes at the party with an ugly boyfriend called DOM”
减少节点数 • switchable配合eventbase的强⼤扩展能⼒ – beforeswitch: 点击后再创建panels,满⾜原逻辑 – switch: 创建完再请求数据,执⾏渲染
内存开销
案例:数码榜单
优化数据 ⾸屏 满屏 ⽐例 请求数 29 453 15.62 总⼤⼩ 129K
1.4M 10.85 总节点 1164 13819 11.87 指标 ⾸屏数值 ⾸屏 7K ⾸屏cdn请求 2(combo)
延迟加载优化 • 滚动时计算⾼度 VS 提前按⾼度位置排序 • O(n) => O(1) •
更多
None
延迟加载优化 • 滚动加载(复杂度从O(n)降到O(1))
延迟加载优化 • 滚动加载(复杂度从O(n)降到O(1))
延迟加载优化 • 滚动加载(复杂度从O(n)降到O(1))
延迟加载优化 • 延迟绑定
延迟加载优化 • 延迟绑定
延迟加载优化 • 延迟绑定
将延迟进⾏到底 • 异步载⼊的模块,进⼀步优化(趋势图)
案例:趋势图模块 • 他⼀开始,就只有⼀个⼩ICON(trigger)
进⼀步优化CSS • 渐变?
进⼀步优化CSS • 阴影?
进⼀步优化CSS • 三⾓和圆⾓ – 乔花的精彩分享
降级,也要优雅 • IE?丑了点
降级,也要优雅 • 没有图⽚?
图⽚排序 • 刚开始: – 姐姐,这个能做成纯数字的嘛? – 不好吧,就1-15,你就切15张图好了。。 – =_=! 好吧。。
• 后来: – 姐姐,这个可以排到90嘛。。 – 你不是说很⿇烦吗? – 我做成可以计算偏移量的了。 – 理论上可以⽀持任何位数。。 – COOL!挺好的,加上吧。 – 哦耶!~
图⽚排序 • 通过计算background-position偏移量,把不 相关的东⻄,变成相关的
开发和维护 • PHP Mock数据 • 前端模块化(Based on KISSY) • 构建⼯具
PHP Mock • 本地DEMO实现⼀个简单的quickling – 串⾏和并⾏公⽤⼀套系统
PHP Mock • 本地DEMO实现⼀个简单的quickling – 串⾏和并⾏公⽤⼀套系统
PHP Mock • 本地DEMO实现⼀个简单的quickling – 串⾏和并⾏公⽤⼀套系统
构建⼯具
战⽃尚未结束 • 为了减少开发⼯作量,⽂档流都是直接html结构输出。 – JSON,最⼩化输出,前端也可以进⾏模板渲染(Kissy Temlates Proposal) • 资源⽆回收,数据易溢出。 –
本地存储 – dom-data(KISSY深⼊研究(2)——dom-data.js via 龚浩) – 删除script节点(仍⽆法完全回收,未被完全采⽤) • 数据⽆统计(哈波的统计指标仍然不够充分)。 – boomerang • JSONP,不像JSONP;同时异步请求存在DDos的⻛险。 – KISSY.Ajax,我等你等到我⾃⼰都想写⼀个了.. – for(;;);,防范DDos(facebook, google instant, orkut, etc.) • 单元测试/⾏为驱动测试 • 请求,响应优化 – chunking + gzip – flush first!
• Q&A