提升产品性能与开发效率的前端解决方案.pdf

上传人:椰子壳 文档编号:3333604 上传时间:2019-08-13 格式:PDF 页数:45 大小:2.36MB
返回 下载 相关 举报
提升产品性能与开发效率的前端解决方案.pdf_第1页
第1页 / 共45页
提升产品性能与开发效率的前端解决方案.pdf_第2页
第2页 / 共45页
提升产品性能与开发效率的前端解决方案.pdf_第3页
第3页 / 共45页
提升产品性能与开发效率的前端解决方案.pdf_第4页
第4页 / 共45页
提升产品性能与开发效率的前端解决方案.pdf_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《提升产品性能与开发效率的前端解决方案.pdf》由会员分享,可在线阅读,更多相关《提升产品性能与开发效率的前端解决方案.pdf(45页珍藏版)》请在三一文库上搜索。

1、F.I.S 提升产品质量不开发效率的前端解决方案 walterShen About me 沈洪顺 Senior Web Developer 2010年加入百度 FIS 团队技术负责人 walterShen walterShen 高质量的软件研发高质量的软件研发 高可靠性 高性能 高可维护性 高质量 VS 高效率 F.I.S 是一系列提升产品质量不开发效率的工程化方案 o让前端团队可以快速进入角色,丌用担心底层架极、性能优化等问题 o可以减少人工管理静态资源成本和风险,全自劢优化页面性能 o简化开发、提测、部署流程,来达到更快、更可靠、低成本的自劢化项目交付 前端集成解决方案前端集成解决方案 F

2、ront-end Integrated Solution Tools Process Framework FIS Architecture FIS Tools FIS Tools -A Toolset For Production 三条命令 管道式处 理 零配置 高效的缓 存机制 开源 灵活的发 布部署 自劢管理 静态资源 三条命令-满足一切前端需求 fis install 负责代码的编译不部署,它的参数囊括了前端开发所需的各种需求 o添加 -watch 或 -w 参数,支持对项目进行增量编译,监听文件变化再触发编译 o添加 -live 或 -L 参数,支持编译后自劢刷新浏览器 o添加 des

3、t 或 -d 参数,来指定编译后的代码部署路径 o添加 -md5 或 -m 参数,在编译的时候可以对文件自劢加md5戳 o添加 -lint 或 -l 参数,支持在编译的时候根据项目配置自劢代码检查 o添加 -test 或 -t 参数,支持在编译的时候对代码进行自劢化测试 o添加 -pack 或 -p 参数,对产出文件根据项目配置进行打包 o添加 -optimize 或 -o 参数,对js、css、html进行压缩 o添加 -domains 或 -D 参数,为资源添加domain域名 fis release options 本地调试服务器,用于本地预览项目 ofis server start,

4、启劢服务器,默认8080端口,支持自定义rewrite规则 ofis server open, 打开本地server目录,fis release默认发布到此目录 o支持本地数据模拟 fis server options 资源定位 资源内嵌 依赖管理 资源合幵 资源发布 静态资源自动管理 develop: release: 资源定位 develop: release: 资源嵌入 在html中声明依赖 在javascript中声明依赖 在css中声明依赖 map.json fis release d qa,rd,output 灵活的发布部署 有效的分离开发路径不部署路径乊间的关系 o工程师丌再关心

5、资源部署到线上乊后去了哪里,变成了什么名字,这些都可 以通过配置来指定 代码具有很强的可移植性 o由于开发路径不部署路径对工程师透明,因此组件的资源依赖全部都是相对 路径定位的,这样,对于两个同样使用 fis 作为开发平台的团队,即便他们 的部署方式完全丌同也可以有效移植代码。 轻松实现md5、域名添加等功能 o工程师完全丌用关心上线后资源的静态服务器域名是什么 o资源会全部自劢添加md5作为版本戳,服务器可以开启强缓存、回滚时丌需 要回滚静态资源,只须回滚html或模板即可 start 获取所有文件 所有文件 编译变成? 编译 no 缓存是否过期 读取缓存 no parser preproc

6、essor standard postprocessor lint test optimizer 编译流程 yes yes prepackager packager spriter postpackager 打包流程 end FIS Framework 模板框架解决方案,内置静态资源管理和加载框架, 提高服务端的渲染效率和并行度,使得首屏及核心功 能最快展现,适用于网络高延迟/低带宽、国际化等多 种业务场景. 基于 PHP/Smarty 实现的 fis 展现层解决方案 基于 Go/Martini 实现的 fis 展现层解决方案 基于Java/Velocity 实现的 fis 展现层解决方案 纯

7、前端 fis 展现层解决方案,丌依赖于后端 Plus Pure Jello Gois Yogurt 基于 NodeJS/Express.js 实现的 fis 前后端一体化解决方案 NodeJS 前后端一体化框架(Yogurt) Fr UI Layer Front-End Back-End UI Layer Business Logic Server Browser HTTP/HTTPS UI Layer Front-End Back-End Business Logic Server Browser HTTP/HTTPS UI Layer Server HTTP/HTTPS 路由 中间件 MV

8、C 框架 RPC Logger 环境部署 静态资源管理与加载 分级发布 进程守护 健康检测 Error handling 开发 部署 热重启 多进程 运维 Yogurt - Operate node.js in production 监控预警 Framework Express.js Krakenjs Router controller1.js controller2.js controller1.js Middleware compression json session security urlencode static cookie logger Bigpipe sync Swing q

9、uickling async pipeline Templte html head body script/style widget require extends block Models&i18n model localization Structure front-end server 开发 config Nginx PHP UI Nginx PHP UI server server PHP UI Cluster 部署 Load Balancer(Transmit) Nginx server(multi core) NodeJS UI Cluster Node.js process No

10、de.js process Node.js process Request Nginx server(multi core) Node.js process Node.js process Node.js process startup/reload memwatch daemon load balancer 0s downtime reload error handling heartbeat check monitor forewarning log 运维 Yog-pm (extends pm2) FIS Process FIS静态资源自劢合并服务(Auto-Pack) 1. 性能优化投入

11、成本高且丌可持续性 2. 人工优化很难达到全局最优 静态资源自适应优化合幵服务 o根据网站页面pv以及页面静态资源使用情况,自劢计算静态资源合幵方案, 减少人工管理静态资源成本和风险 o从网络请求、首屏渲染等方面优化网站性能、减少服务器开销 完全兼容FIS编译流程,枀小学习成本 自劢计算静态资源最佳合幵方式 自劢适应静态资源的添加不删除 适配丌同网络、丌同合幵方式的情况 Auto-Pack Auto-Pack 模块 静态资源 后端模板 CDN 资源表 Script、style、image info Content HTML browser Complete HTML 预编译 压缩优化 封装 编

12、译极建 生成资源表 线上监控 自劢统计分枂 自劢优化 自劢打包服务 静态资源管理框架 资源合并算法 合幵收益 :对于同时使用A和B的页面节省了网络来回时间(RTT) 合幵损失 :对于只使用A的页面,浪费的B的大小(损失的大小 / 下载速度) 纯收益 : 合幵收益 合幵损失 Page_1 Page_2 Page_3 Page_4 Page_5 访问量 10M 1M 200K 10K 1K A.Js (1KB) B.Js (1KB) C.Js (300B) D.Js (2KB) E.Js (700B) F.Js (600B) 区分首屏和延迟加载 区分网络 区分国家 功能发布控制系统(Feature

13、-Flag) 精准发布,控制自如 分支分出去时间越长往往代码merge难度越大、风险和成本越高 在一个分支中修改了函数名字可能会引入大量编译错误,重极成本很高 一旦代码库中存在了分支,无法很好的支持持续集成,迭代速度受影响 有多个feature branches的时候,无法测试这多个feature乊间的影响 Feature Branches Facebooks Trunk Based Development Feature-Flag Feature-Flag 根据各种场景和条件配置控制是否展现页面某一区域或功能,丌用重新发布代码 Feature-Flag框架 o快速回滚 o小流量 oA/B测试

14、 o特定时间发布 o特定区域发布 o主干开发 Flag管理平台,可视化管理产品中的所有 feature flag 小流量评估平台,结合 feature flag 自劢分枂、评估小流量的效果和收益 Feature-Flag Feature-Flag 如果某个功能最终丌上线,后续需要手工删除相关代码 会出现因为配置错误某个 feature 没有完成就出现在线上 需要控制 flag 数量,有可能会被滥用 Feature-Flag 使用注意 Feature-Flag 使用注意 百度FIS团队 用户:百度、阿里、腾讯、UC、去哪. QQ交流群:315973236 web site: http:/ github: https:/ 招聘:http:/ 开源 walterShen

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1