SlideShare una empresa de Scribd logo
1 de 47
腾讯搜搜
搜搜前端架 与 化构 优
•Moonzhang( 勇张 ) @ 2010-10-30
内容提要
 搜搜 介腾讯 简
 前端定义
 架 的演构 变
 前端演 与 化变 优
 展与展望发
搜搜 介简
A. 推广
B. 直 区达
C. 搜索 果结
D. 新闻 BOX
E. 搜索 史历
F. 广告
G. 在搜还
H. 其它 ..
直 区(达 Bingo )介绍
搜索平台部 – WEB 开发组
SUSE Linux
• 公司 一部署统
• 容易维护
– 一的统 RPM 源资
• 区分 WEB 服 器与务 Cache 服 器务
• 安全性
MySQL
• 流行 + 完善
• 易用
• 易维护
• M/S
KW DB
• Memcached
• TT
• BDB/Redis/membase etc..
P H P
• 速度、速度、速度
– 速度快开发
– 学 成本低(习 C )变种
– 行效率好运
• 第三方 成熟(库 PEAR, PECL )
• 社区 大而活庞 跃
• 日 成熟(趋 OOP, namespace , 包…)闭
SuperPHP / WinPHP
• PHP 框架开发
• 实现 MVC 模式, 清晰结构 , 使 者只 注开发 关 业务逻辑
• 提供
Auth 、 ACL 、 DB 、 ORM 、 Cache 、 Session 、
Util 、 Page 等模块
Apache
• 定稳
• 强大
• 配置 活灵
• mod_php5
• mod_rewrite
Memcached
• 用于存放 存数据,供各缓 APP 使用
• 定稳
• 配置简单
• PHP 展:扩 php_memcache
– API : get,set,increment,decrement,delete…
• 高效
• 分布式
接入示意图
与挑问题 战
• 用 越来越多户
• DNS 不准?
• 用 反映 速度慢户 访问
解决 法办
• 利用自有 IP 库
• 自建智能 DNS
• 搭建 速系测 统
与挑问题 战
• 点单
• 故障 移周期 ?转 长
• 缺少 控监
解决 法办
• 增加 HA
• 增加 控监
搜索 求请
与挑问题 战
• 响 常超应时间经 过 1 秒甚至 2 秒 (server 端
)
• Memcache timeout (1s)
Memcache 扩展
解决 法办
• 使用 socket+Memecache 数据协议读
• 控制 timeout 在秒 以内(级 50ms)
Socket
与挑问题 战
• Bingo 用越来越多:天气、股票、应 NBA 。。。
• Bingo 交互 ,既“美 ”又要“ ”起来变复杂 观 动
• 始 付不 来团队开 应 过
– 网页版本迭代
– 新的 Bingo 应用
Socket
解决方案
• 喊出敏捷口号
• 拆分业务
– 将网页搜索与直达区拆分
– 直达区作为独立的业务
• 架 更构变
– bingo 作为独立的服务
– 网页并行请求搜索结果与 bingo 数据
– 控制 timeout&latency
• 小 分组划
– 成立直达区 team (产品、开发、测试)
架 更构变
心得体会
• 用已掌握的技 解决术 问题 , 权衡 定与激情稳 (twitter)
• 避免 度 (摩尔定律过 设计 )
• 使用内存比使用磁 来的爽的多盘
– RAM is the new disk!
• 切分(水平、按功能)
– 把工作负载分解成多个有能力驾驭的小单元,让每个单元都
能维持良好的性价比
与挑 (前台)问题 战
• 增业务 长
– 用户
– bingo 数量
– 数据越来越多,内存吃紧
• Bingo 越来越 ,都要 起来复杂 动
• 合作成本高, 范缺失团队 编码规
• 脚本管理混乱, 用性低, 成本高复 维护
• 代 冲突:码 bingo vs websearch
解决方案
• 制 代 合作 范订 码 规 + 包闭
• 式 ,区分公共 式和不同样 规划 样 app 式样
• 代码规划 + 重用
一个脚本类选择 库
• 自行开发
• Prototype
• jQuery
• YUI
• dojo
• Ext
• QZFL
• SuperJS
与挑问题 战
• 前端展现时间过长
– HTML table 嵌套
– JS 混乱、堆砌
– 各 bingo app 间 CSS 冲突、低效
– ……
解决方案
• 问题: HTML table 嵌套
• 解决 法办 : 化 面优 页 结构
– 2009 年 行第一次 面大重 , 一个多月进 页 构 历时
与挑问题 战
• 网站 面性能形 峻页 势严
– 需要系 的 行 化统 进 优
• 一些数据:
– Amazon 慢 0.1 s -> 1% 用 放弃交易户
– Google 慢 0.4s -> 0.6% 放弃搜索
– Yahoo! 慢 0.4s -> 少减 5%-9% 的流量
– Bing 慢 2s -> 收入下降 4.3 %
– Baidu??
用 速度体 的户 验 1-3-10 原则
工 具
 HTTPWATCH
 Wireshark
 FireBug
 Yahoo Yslow
 Google PageSpeed
 Fiddler
 …….
AOL Page Test
online version: http://webpagetest.org
‣ IBM Page Detailer
http://www.alphaworks.ibm.com/tech/pagedetailer
‣ Pingdom
http://tools.pingdom.com
‣ WebKit’s Web Inspector
Safari 4 Beta or WebKit nightly from http://webkit.org
‣ Web Debugging Proxies
http://charlesproxy.com, http://fiddlertool.com
Pagetest - AOL
Fiddler - Microsoft
ySlow – YAHOO!
参考书
– High Performance Web sites
– Evan faster web sites
– And, learn from best practices..
少 求减 请
• 合并
– CSS 合并
– sprites
– Javascript
• 模块化拆分、合并
• 动态载入
数据量压缩
• GZIP
– 文本 行对 进 压缩 (html/css/js etc)
– 非文本不对 压缩 (gif/png/jpeg etc)
• Apache: mod_gzip/mod_deflate
• 比一般在压缩 50% - 70%
 www.google.com 11697 bytes, gzip compressed to 4886 bytes ( 58.2 % saving )
 www.baidu.com 3641 bytes, gzip compressed to 1775 bytes ( 51.2 % saving )
 www.soso.com 4756 bytes, gzip compressed to 2134 bytes ( 55.1 % saving )
Minify:CSS & JS
• 工具
– YUICompressor
– Google Closure Compiler
– Google PageSpeed
• 去掉无用的 式样
• 、 化规划 优 cookie
• 依然会 省,即使有节 gzip
Minify html
• 去掉注 及空白符释
• 省略特定 合标签闭
– li,p,br etc…
– http://www.w3.org/TR/html4/sgml/dtd.html
• 去除 type=“text/javascript”, text/css etc..
• 去掉可去除的引号
• 使用短 式样
化 片优 图
• 去掉 外的空白区域额
• 使用最 的文件格式优
– JPG, 60 quality - 32K
– PNG-8, 256 colors - 37K
– GIF, 256 colors - 42K
– PNG-24 - 146K
• 使用 CSS 代替 片图
-moz-border-radius:4px;
-webkit-border-radius: 4px;
border-radius: 4px;
• 化的经优 PNG 一般要比 GIF 要小
• 使用 Smush.it
Cache
• 少 求减 请
• 器 是否是最新的浏览 检查
• 通过 HTTP 控制头
– Expires: Sat, 1 Jan 2011 20:00:00 GMT
– Cache-Control: max-age=31536000
• 置 期 未来的某个 刻设 过 时间为 时
Cache : 少 求数减 请
加速 求请
• 无阻塞加载 JS
• 分段 出(搜索前、中、后)输
• 加 ( 片、 式、脚本, 面片)预 载 图 样 页
• 按需加 脚本载
• 指定 片尺寸,以免图 reflow
• Browscap / js / 条件注释 /css hack
架 化构优
心得体会
• 毫秒必争的心态
• 不是 明就可以,要有基 件支持聪 础组
• 、简单 务实
• 用 至上户
• 用数据说话
• 有效利用工具
展望
• 利用 HTML5 、 CSS3
– 替换图片
– LocalStorage,Offline Storage
• 探索和研 最适合自己的前端框架发
• 精雕 琢地前端细 编码
• 持 化续优
• 界分享业
迎 的加入欢 您
• 搜索 , 互 网 最高的 用联 门槛 应
• 搜索,未来兵家必争之地
• 有更多的架 挑 、前端 等待解决还 构 战 问题
• 迎加入搜搜欢 WEB 技开发组 术团队
谢 谢

Más contenido relacionado

La actualidad más candente

redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化Frank Xu
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘Joshua Zhu
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析Leechael
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践drewz lin
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华zhuozhe
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑Leo Zhou
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化Jinrong Ye
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化Joshua Zhu
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110bngoogle
 
分布式存储的元数据设计
分布式存储的元数据设计分布式存储的元数据设计
分布式存储的元数据设计LI Daobing
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731drewz lin
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案XiaoJun Hong
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 

La actualidad más candente (20)

redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
分布式存储的元数据设计
分布式存储的元数据设计分布式存储的元数据设计
分布式存储的元数据设计
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 

Destacado (20)

183银行服务器下载说明
183银行服务器下载说明183银行服务器下载说明
183银行服务器下载说明
 
软件工程&架构
软件工程&架构软件工程&架构
软件工程&架构
 
Scrum
ScrumScrum
Scrum
 
站点报告模板
站点报告模板站点报告模板
站点报告模板
 
Tom 030810 Setawwa
Tom 030810 SetawwaTom 030810 Setawwa
Tom 030810 Setawwa
 
Rodan + Fields Business Opportunity
Rodan + Fields Business OpportunityRodan + Fields Business Opportunity
Rodan + Fields Business Opportunity
 
Wh Espey 021810 Setawwa
Wh Espey 021810 SetawwaWh Espey 021810 Setawwa
Wh Espey 021810 Setawwa
 
Surface Water Conversion - City of Sugar Land
Surface Water Conversion - City of Sugar LandSurface Water Conversion - City of Sugar Land
Surface Water Conversion - City of Sugar Land
 
Antoine de saint pragmática
Antoine de saint  pragmáticaAntoine de saint  pragmática
Antoine de saint pragmática
 
Screenshot 7
Screenshot 7Screenshot 7
Screenshot 7
 
tcc logo
tcc logotcc logo
tcc logo
 
TË JESH NJË SHËRBËTOR - Lluka 22b
TË JESH NJË SHËRBËTOR - Lluka 22bTË JESH NJË SHËRBËTOR - Lluka 22b
TË JESH NJË SHËRBËTOR - Lluka 22b
 
Rolas en El Mañanero.
Rolas en El Mañanero.Rolas en El Mañanero.
Rolas en El Mañanero.
 
Csendesen
CsendesenCsendesen
Csendesen
 
Dubai metró
Dubai metróDubai metró
Dubai metró
 
World Of Sea
World Of SeaWorld Of Sea
World Of Sea
 
История на картите
История на картитеИстория на картите
История на картите
 
KISHA PA DASHURI - Zbulesa 2:1-7
KISHA PA DASHURI - Zbulesa 2:1-7KISHA PA DASHURI - Zbulesa 2:1-7
KISHA PA DASHURI - Zbulesa 2:1-7
 
FESTAT SOLEMNE plus zbatime - Lluka 22
FESTAT SOLEMNE plus zbatime - Lluka 22FESTAT SOLEMNE plus zbatime - Lluka 22
FESTAT SOLEMNE plus zbatime - Lluka 22
 
Graphs Questions For Wiki
Graphs   Questions For WikiGraphs   Questions For Wiki
Graphs Questions For Wiki
 

Similar a 张勇 搜搜前端架构

美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇传贵 谢
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconYiwei Ma
 
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法Jazz Yao-Tsung Wang
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结Frank Xu
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03Hang Geng
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端moonbingbing
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试tbmallf2e
 
Distributed Data Analytics at Taobao
Distributed Data Analytics at TaobaoDistributed Data Analytics at Taobao
Distributed Data Analytics at TaobaoMin Zhou
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforcemeecheng
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统美团点评技术团队
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里li luo
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构drewz lin
 

Similar a 张勇 搜搜前端架构 (20)

美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法
2015-05-20 製造業生產歷程全方位整合查詢與探勘的規劃心法
 
美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
 
Distributed Data Analytics at Taobao
Distributed Data Analytics at TaobaoDistributed Data Analytics at Taobao
Distributed Data Analytics at Taobao
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforce
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
 

Más de isnull

My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规isnull
 
基于Web的项目管理工具redmine
基于Web的项目管理工具redmine基于Web的项目管理工具redmine
基于Web的项目管理工具redmineisnull
 
雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享isnull
 
张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式isnull
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享isnull
 
Barcelona apc mem2010
Barcelona apc mem2010Barcelona apc mem2010
Barcelona apc mem2010isnull
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationisnull
 
Designofhtml5
Designofhtml5Designofhtml5
Designofhtml5isnull
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化isnull
 
我的Ubuntu之旅
我的Ubuntu之旅我的Ubuntu之旅
我的Ubuntu之旅isnull
 
淘宝分布式数据处理实践
淘宝分布式数据处理实践淘宝分布式数据处理实践
淘宝分布式数据处理实践isnull
 
阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训isnull
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析isnull
 
Data on the web
Data on the webData on the web
Data on the webisnull
 
Tsung
Tsung Tsung
Tsung isnull
 
Dutch php conference_apc_mem2010
Dutch php conference_apc_mem2010Dutch php conference_apc_mem2010
Dutch php conference_apc_mem2010isnull
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opmisnull
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探isnull
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁isnull
 

Más de isnull (20)

My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
基于Web的项目管理工具redmine
基于Web的项目管理工具redmine基于Web的项目管理工具redmine
基于Web的项目管理工具redmine
 
雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享
 
张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享
 
Barcelona apc mem2010
Barcelona apc mem2010Barcelona apc mem2010
Barcelona apc mem2010
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimization
 
Designofhtml5
Designofhtml5Designofhtml5
Designofhtml5
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
我的Ubuntu之旅
我的Ubuntu之旅我的Ubuntu之旅
我的Ubuntu之旅
 
淘宝分布式数据处理实践
淘宝分布式数据处理实践淘宝分布式数据处理实践
淘宝分布式数据处理实践
 
阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训
 
Scrum
ScrumScrum
Scrum
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
 
Data on the web
Data on the webData on the web
Data on the web
 
Tsung
Tsung Tsung
Tsung
 
Dutch php conference_apc_mem2010
Dutch php conference_apc_mem2010Dutch php conference_apc_mem2010
Dutch php conference_apc_mem2010
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opm
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁
 

张勇 搜搜前端架构

  • 1. 腾讯搜搜 搜搜前端架 与 化构 优 •Moonzhang( 勇张 ) @ 2010-10-30
  • 2. 内容提要  搜搜 介腾讯 简  前端定义  架 的演构 变  前端演 与 化变 优  展与展望发
  • 4. A. 推广 B. 直 区达 C. 搜索 果结 D. 新闻 BOX E. 搜索 史历 F. 广告 G. 在搜还 H. 其它 ..
  • 7. SUSE Linux • 公司 一部署统 • 容易维护 – 一的统 RPM 源资 • 区分 WEB 服 器与务 Cache 服 器务 • 安全性
  • 8. MySQL • 流行 + 完善 • 易用 • 易维护 • M/S
  • 9. KW DB • Memcached • TT • BDB/Redis/membase etc..
  • 10. P H P • 速度、速度、速度 – 速度快开发 – 学 成本低(习 C )变种 – 行效率好运 • 第三方 成熟(库 PEAR, PECL ) • 社区 大而活庞 跃 • 日 成熟(趋 OOP, namespace , 包…)闭
  • 11. SuperPHP / WinPHP • PHP 框架开发 • 实现 MVC 模式, 清晰结构 , 使 者只 注开发 关 业务逻辑 • 提供 Auth 、 ACL 、 DB 、 ORM 、 Cache 、 Session 、 Util 、 Page 等模块
  • 12. Apache • 定稳 • 强大 • 配置 活灵 • mod_php5 • mod_rewrite
  • 13. Memcached • 用于存放 存数据,供各缓 APP 使用 • 定稳 • 配置简单 • PHP 展:扩 php_memcache – API : get,set,increment,decrement,delete… • 高效 • 分布式
  • 15. 与挑问题 战 • 用 越来越多户 • DNS 不准? • 用 反映 速度慢户 访问
  • 16. 解决 法办 • 利用自有 IP 库 • 自建智能 DNS • 搭建 速系测 统
  • 17. 与挑问题 战 • 点单 • 故障 移周期 ?转 长 • 缺少 控监
  • 18. 解决 法办 • 增加 HA • 增加 控监
  • 20. 与挑问题 战 • 响 常超应时间经 过 1 秒甚至 2 秒 (server 端 ) • Memcache timeout (1s) Memcache 扩展
  • 21. 解决 法办 • 使用 socket+Memecache 数据协议读 • 控制 timeout 在秒 以内(级 50ms) Socket
  • 22. 与挑问题 战 • Bingo 用越来越多:天气、股票、应 NBA 。。。 • Bingo 交互 ,既“美 ”又要“ ”起来变复杂 观 动 • 始 付不 来团队开 应 过 – 网页版本迭代 – 新的 Bingo 应用 Socket
  • 23. 解决方案 • 喊出敏捷口号 • 拆分业务 – 将网页搜索与直达区拆分 – 直达区作为独立的业务 • 架 更构变 – bingo 作为独立的服务 – 网页并行请求搜索结果与 bingo 数据 – 控制 timeout&latency • 小 分组划 – 成立直达区 team (产品、开发、测试)
  • 25. 心得体会 • 用已掌握的技 解决术 问题 , 权衡 定与激情稳 (twitter) • 避免 度 (摩尔定律过 设计 ) • 使用内存比使用磁 来的爽的多盘 – RAM is the new disk! • 切分(水平、按功能) – 把工作负载分解成多个有能力驾驭的小单元,让每个单元都 能维持良好的性价比
  • 26. 与挑 (前台)问题 战 • 增业务 长 – 用户 – bingo 数量 – 数据越来越多,内存吃紧 • Bingo 越来越 ,都要 起来复杂 动 • 合作成本高, 范缺失团队 编码规 • 脚本管理混乱, 用性低, 成本高复 维护 • 代 冲突:码 bingo vs websearch
  • 27. 解决方案 • 制 代 合作 范订 码 规 + 包闭 • 式 ,区分公共 式和不同样 规划 样 app 式样 • 代码规划 + 重用
  • 28. 一个脚本类选择 库 • 自行开发 • Prototype • jQuery • YUI • dojo • Ext • QZFL • SuperJS
  • 29. 与挑问题 战 • 前端展现时间过长 – HTML table 嵌套 – JS 混乱、堆砌 – 各 bingo app 间 CSS 冲突、低效 – ……
  • 30. 解决方案 • 问题: HTML table 嵌套 • 解决 法办 : 化 面优 页 结构 – 2009 年 行第一次 面大重 , 一个多月进 页 构 历时
  • 31. 与挑问题 战 • 网站 面性能形 峻页 势严 – 需要系 的 行 化统 进 优 • 一些数据: – Amazon 慢 0.1 s -> 1% 用 放弃交易户 – Google 慢 0.4s -> 0.6% 放弃搜索 – Yahoo! 慢 0.4s -> 少减 5%-9% 的流量 – Bing 慢 2s -> 收入下降 4.3 % – Baidu??
  • 32. 用 速度体 的户 验 1-3-10 原则
  • 33. 工 具  HTTPWATCH  Wireshark  FireBug  Yahoo Yslow  Google PageSpeed  Fiddler  ……. AOL Page Test online version: http://webpagetest.org ‣ IBM Page Detailer http://www.alphaworks.ibm.com/tech/pagedetailer ‣ Pingdom http://tools.pingdom.com ‣ WebKit’s Web Inspector Safari 4 Beta or WebKit nightly from http://webkit.org ‣ Web Debugging Proxies http://charlesproxy.com, http://fiddlertool.com Pagetest - AOL Fiddler - Microsoft ySlow – YAHOO!
  • 34. 参考书 – High Performance Web sites – Evan faster web sites – And, learn from best practices..
  • 35. 少 求减 请 • 合并 – CSS 合并 – sprites – Javascript • 模块化拆分、合并 • 动态载入
  • 36. 数据量压缩 • GZIP – 文本 行对 进 压缩 (html/css/js etc) – 非文本不对 压缩 (gif/png/jpeg etc) • Apache: mod_gzip/mod_deflate • 比一般在压缩 50% - 70%  www.google.com 11697 bytes, gzip compressed to 4886 bytes ( 58.2 % saving )  www.baidu.com 3641 bytes, gzip compressed to 1775 bytes ( 51.2 % saving )  www.soso.com 4756 bytes, gzip compressed to 2134 bytes ( 55.1 % saving )
  • 37. Minify:CSS & JS • 工具 – YUICompressor – Google Closure Compiler – Google PageSpeed • 去掉无用的 式样 • 、 化规划 优 cookie • 依然会 省,即使有节 gzip
  • 38. Minify html • 去掉注 及空白符释 • 省略特定 合标签闭 – li,p,br etc… – http://www.w3.org/TR/html4/sgml/dtd.html • 去除 type=“text/javascript”, text/css etc.. • 去掉可去除的引号 • 使用短 式样
  • 39. 化 片优 图 • 去掉 外的空白区域额 • 使用最 的文件格式优 – JPG, 60 quality - 32K – PNG-8, 256 colors - 37K – GIF, 256 colors - 42K – PNG-24 - 146K • 使用 CSS 代替 片图 -moz-border-radius:4px; -webkit-border-radius: 4px; border-radius: 4px; • 化的经优 PNG 一般要比 GIF 要小 • 使用 Smush.it
  • 40. Cache • 少 求减 请 • 器 是否是最新的浏览 检查 • 通过 HTTP 控制头 – Expires: Sat, 1 Jan 2011 20:00:00 GMT – Cache-Control: max-age=31536000 • 置 期 未来的某个 刻设 过 时间为 时
  • 41. Cache : 少 求数减 请
  • 42. 加速 求请 • 无阻塞加载 JS • 分段 出(搜索前、中、后)输 • 加 ( 片、 式、脚本, 面片)预 载 图 样 页 • 按需加 脚本载 • 指定 片尺寸,以免图 reflow • Browscap / js / 条件注释 /css hack
  • 44. 心得体会 • 毫秒必争的心态 • 不是 明就可以,要有基 件支持聪 础组 • 、简单 务实 • 用 至上户 • 用数据说话 • 有效利用工具
  • 45. 展望 • 利用 HTML5 、 CSS3 – 替换图片 – LocalStorage,Offline Storage • 探索和研 最适合自己的前端框架发 • 精雕 琢地前端细 编码 • 持 化续优 • 界分享业
  • 46. 迎 的加入欢 您 • 搜索 , 互 网 最高的 用联 门槛 应 • 搜索,未来兵家必争之地 • 有更多的架 挑 、前端 等待解决还 构 战 问题 • 迎加入搜搜欢 WEB 技开发组 术团队

Notas del editor

  1. 直达区使用独立的服务器,作为网页前台的一个appserver,网页使用socket进行请求