waynelu(t.qq.com/waynelu)

Slides:



Advertisements
Similar presentations
教师成绩录入步骤 1. 登录教务系统 2. 进入教师成绩管理界面 3. 选择相应的教学班,点击 “ 课程成绩录 入 ” 进入成绩录入界面 4. 点击 “ 设置 ” 按钮设置 “ 成绩分项 ” 5. 录入成绩, “ 保存成绩 ” 按钮可以保存成 绩但不提交(提交后不能再修改成绩) 6. “ 提交成绩 ”
Advertisements

7.2 图示化记忆 记忆的概述 图示化记忆 联想记忆法 奇特联想记忆法 用手记忆.
醫學美學之我見ー肉毒桿菌 班級:應日三乙 姓名:蔡雅卉 學號: 497E0076. 前言 現在的人,已經把 整型看做是微不足 道的事情了。即使 只是戴牙套、局部 雷射、割雙眼皮、 打美白針、肉毒桿 菌等等,都可以在 身體上做不同的改 變,而讓自己更滿 意自己的外表。
(学生习作) 相信天生我材必有用,人生必将从暗淡走向精彩。 美国 NBA 是所有篮球运动员向往的舞台。美籍华人林 书豪曾一度作为板凳队员,被埋没多年。可是他没失 去对篮球的热爱,在一次机会中,他大显身手让华人 为之骄傲。多年的埋没没有让他迷失方向,而是取得 了成功。 诊断结果: 以叙代议,缺少分析.
第 三 章 领悟人生真谛 创造人生价值.
资源平台应用培训 武汉市交通学校信息化建设指导委员会.
专题三 正确使用标点符号 共 300 页.
大家 午安.
我愛你,你不愛我, 我得不到的心,別人也休想得到。
白玉苦瓜 余光中.
104年度國立宜蘭大學新進主管研討 主計業務宣導說明
体育与健康 篮球运动基础知识 三台县新德镇初级中学 体育与健康 赖见.
提升应用内HTML5 的开发和使用体验
如何撰写对联.
102年實施之高中職及五專多元入學(含免試入學)之招生機制
事件驱动的移动数据中心 广州舜飞信息科技有限公司 谭荣棉.
读者与图书馆 2009年春季版 总第 15 期 山 东 交 通 学 院 图 书 馆 2009年3月.
大规模互联网用户密码泄露 风险控制对策 吴锐
讲故事训练 授课人:田轶.
主题班会 发扬团队精神,争取成功.
第十一課 菜園 6-11.
SPM 中国文学 第三部分 戏剧.
林书豪的生存智慧是什么?(观点) 林书豪为什么要这样做? 林书豪是怎样做的? 林书豪这样做的意义作用是什么? 2013二模
休閒二乙4A1B0030 陳唯玲 休閒二乙4A1B0020 吳嘉雯 休閒二乙4A1B0040 徐巧恩 指導老師:柯玲玫
校本选修课 第三专题 西藏问题 北京师大二附中 李文燕.
2012级暑期放假安全教育 及宿舍搬迁工作布置会 北京化工大学理学院 辅导员:曹鼎 2013年6月6日.
高三语文复习之 融贯千载,悠悠成语.
十八岁和其他 杨子.
孤 獨 台灣民謠-莫斯科交響樂團-春天那愷這呢寒.
第十三课 建设和谐文化.
正修科技大學教學發展中心 教師教學觀摩與經驗分享 電子工程系 張法憲副教授.
网页设计师职位需求.
歡 迎 各位視光界精英 蒞 臨 元培視光系 103校外學分班說明會.
籃球皇帝張伯倫 作者:徐子翔.
2015年云南财经大学图书馆 新生入馆教育考核试题 答题指南
好作文是写出来的!.
幼兒美勞試教 我想飛~~~~~ 四幼二A D 莊小萱 D 林昀儒 D 劉思妤
辨析标点使用的模糊点 课件制作:忻州师院附中 邓占云.
蘇軾詞的賞析
团队精神.
柯奕宏(06) 王予亨(13) 郭秉逸(15) 楊雯凈(23) 顏佑瑩(32)
第十五章 传播学调查研究方法.
自然與生活科技領域 認識太陽能 蘇紋琪、石明玉.
移动开发的灵便迭代之道 黄凯.
組員:蔡惠雅 494D0032 楊雅惠494B0079 蔡騏鴻 葉時宇 余建霖495B0002 陳瑛淑495B0021
 全能的天才畫家- 李奧納多‧達文西 (西元1452年-1519年) 指導老師:袁淑芬老師 製作人:饒佩芯.
网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.
AngularJS -- 使用AngularJS进行开发
第二讲 搭建Java Web开发环境 主讲人:孙娜
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
第17章 网站发布.
認識我的故鄉_台中市.
WEB统一检索本地整合技术 中国农业大学图书馆 康实.
SOA – Experiment 2: Query Classification Web Service
學習單 1.人體的運動主要會運用到哪些系統來完成?試簡述之。 (1)骨骼、關節 (2)骨骼肌:包括頭頸肌、軀幹肌和四肢肌
奧巴馬寫給女兒的信.
致 理 科 技 大 學 「106年大專校院弱勢學生助學計畫」 說 明 會 中 華 民 國 106 年 9 月 13日.
VisComposer 2019/4/17.
精忠报国  演唱:屠洪纲 作词:陈涛 作曲:张宏光  狼烟起 江山北望  龙起卷 马长嘶 剑气如霜  心似黄河水茫茫  二十年 纵横间 谁能相抗  恨欲狂 长刀所向  多少手足忠魂埋骨它乡  何惜百死报家国  忍叹惜 更无语 血泪满眶  马蹄南去 人北望  人北望 草青黄 尘飞扬  我愿守土复开疆  堂堂中国要让四方来贺.
解决“最后1公里”问题.
樂樂請假了 尊重的故事 資料來源:臺北縣國民小學品德教育手冊 故事來源:臺北縣國民小學品德教育手冊 網路小故事
聽聽那冷雨---重點摘要 二愛 王煜榕.
Touch Github = Touch the World
服務教育課程 改制說明會 學生事務處 服務教育組
喜雨亭記 國二甲 S 陳姿婷.
 刘翔,在雅典奥运会上夺得男子110米栏的冠军,成为中国田径当之无愧的“第一人”。
憲政與民主 應化3A 邱泓明.
基于列存储的RDF数据管理 朱敏
古蹟知性之旅 我和新港奉天宮有個約 報告人:陳 映 竹 傅 湘 甯.
异常交易监管等监察业务培训 大连商品交易所 监察部 2018年4月.
Presentation transcript:

waynelu(t.qq.com/waynelu) 2014-04 手腾JS资源版本增量更新方案 waynelu(t.qq.com/waynelu) 2014-04

about me 卢勇福(waynelu) 微博: http://t.qq.com/waynelu http://www.weibo.com/u/1849616271 github: https://github.com/luyongfugx

提纲 背景和问题 传统cdn静态资源方式存储js html5离线存储方式存储js js增量更新算法设计 增量更新接入方案 实战效果

背景和问题 2014.3.1-2014.3.31期间手腾的几个webapp 共发布:12次, 发布间隔:2~3天, 每次修改js:3至4个 js请求:2亿多次 js修改:基本小于5%,不超过20% 的。

背景和问题 在快速迭代的敏捷开发过程中,我们通 过快速更新版本及时响应了用户需求和bug修 复,但是我们同时也浪费了用户极为看重的流 量资源!!!

cdn+浏览器cache 优点: 缺点: 传统cdn静态资源方式存储js 1.简单,容易维护 2.304 cache 1.缓存会实效,用户强制刷新时可能会有http请求 2.快速迭代版本过程中少量修改,全量更新

html5 appcache (离线存储) 优点: 缺点: html5离线存储方式存储js 1.新版本启用刷新体验问题 真正的离线,只有版本更新才会有请求 缺点: 1.新版本启用刷新体验问题 2.难于维护,灰度等策略比较难实施 3.快速迭代版本过程中少量修改,全量更新

可行性: 优点: 本地存储模拟离线存储 1.大小5m,一般js小于1m 2.跨域问题:Access-Control-Allow-Origin:* 3.key-value形式本地数据,用eval执行 优点: 1.减少不必要的http请求,有更新才有请求,省流量 2.避免离线存储带来的子刷新体验问题 3.增量更新!

js增量更新算法设计

js增量更新算法设计 旧文件分成n块 通过滚动查找得到增量更新文件 最终增量文件表示如下: 1,data1,2,3,data2,4,5,6 chunk0 chunk1 chunk2 chunk3 chunk4 chunk5 通过滚动查找得到增量更新文件 chunk0 data1 chunk1 chunk2 data2 chunk3 chunk4 chunk5 最终增量文件表示如下: 1,data1,2,3,data2,4,5,6 进一步合并顺序块得到: [1,1],data1,[2,2],data2,[4,3] 新文件内容: chunk0+data1+chunk1+chunk2+data2+chunk3+chunk4+chunk5

js增量更新算法设计 以 s=‘1345678abcdefghijklmnopq’ 修改为 a=‘13456f78abcd2efghijklmnopq' 例 设块长度为4则,源文件分成(第一行块号,第二行数据): 1 2 3 4 5 6 7 s=‘1 3456 78ab cdef ghij klmn opq' 通过滚动查找比对,得到新的文件构成如下 新数据 2 3 5 6 7 a=‘1 3456 f 78ab cd2ef ghij klmn opq' 最终增量文件表示如下数组: [“a=‘1",2,"f",3,"cd2ef",5,6,7] 进一步合并顺序块,可用一个js数组表示为 [“a=‘1”,[2,1],“f”,[3,1],“cd2ef”,[5,3]

js增量更新算法设计 /* @param source是上一个版本内容, @param trunkSize是块大小, @param checksumcode是两个版本间的增量文件数组 */ function merge(source,trunkSize,checkSumCode){ var strResult=""; for(var i=0;i<checkSumCode.length;i++){ var code=checkSumCode[i]; if(typeof (code)=='string'){ strResult+=code; } else{ var start=code[0]*trunkSize; var strSize=code[1]*trunkSize; var oldcode=source.substr(start,strSize); strResult+=oldcode; return strResult;

浏览器端更新流程

server端实现之打包工具实现

server端实现之打包工具实现 增量文件和全量文件大小对比 增量文件内容接图:

打包工具实现方式的优缺点 优点: 离线完成,然后直接上传cdn,跟传统方式没有区别 缺点: 只能跨一个版本实现增量更新 对回退版本是需要全量更新

具体实现改进-servlet代理

具体实现-servlet代理 优点: 1.可跨多个版本增量更新 2.回退版本也可以增量 3.无需手动生成增量文件 缺点: 需要自己能控制cdn源服务器 对cdn的push是被动的

手机腾讯网增量更新接入方案 MT—手机腾讯网前端统一框架 特点: 1.基于AMD的js模块管理加载器 2. 无缝接入本地存储,js增量更新,兼容统 一版本和单个js文件单个版本两种版本管理 方式 3.mtbuild增量文件生成工具,infocdn手腾 js增量更新cdn源

第三方模块管理工具插件 seajs: requirejs: 增量文件生成代理: storeinc,seajs增量更新插件,配套spm-storeinc-build来实现打包混淆 requirejs: rstoreinc,requirejs增量更新插件,配套有修改后的混淆打包工具r.js 增量文件生成代理: php 版:storeinc.php Nodejs版: storeincServer.js 纯算法版: makeinc.js,merge.js

我们正在筹建的一个开源项目 网址: http://mt.tencent.com Github: https://github.com/mtjs/mt

实战效果 目前接入增量更新的webapp: 手腾掌上车典 手腾秀车 手腾nba 手腾爱电影 手腾个人中心 手腾阅读 手腾体育猜图。。。。。。。 详见http://4g.qq.com里的轻应用

实战效果 秀车,掌上车典,掌上NBA几个webapp的js资源请求方式占比

实战效果 2014.3.1-2014.3.31手腾的几个webapp js请求:2亿多次 地存储读取:1千5百万 全量请求:4千万次 增量更新请求:2千3百万次 平均每个增量命中比全量节省10k数据,通过增量更 新我们大概为用户节省流量: (23000000*10)/(1024*1024)=219G

END 无更新不下载!!! Q&A