新浪博客的优化经验
一个多月前的文章,新浪博客的优化经验:新版博客宣讲会【第五讲】:体验双倍提速博客生活。
公开说明做了的数据库层优化有三个。第一个是对位运算的应用,利用位运算来优化二选一的属性判断; @xmpp 老师曾在 Twitter 上向他人解释这点优化,我感觉这个技巧主要是利用了位运算的速度优势,但实际操作可能需要做点实验,例如在 blob/char 之间进行选择,以及索引添加与否的影响。其次是优化 Slave Server,由于查询需要满足大量条件,而不在 Slave Server 镜像大字段来缩减 Slave Server 上数据的体积,也间接优化了查询速度。最后就是把 Slave Server 按照需要进行设置,例如 Slave A 针对应用 M 重新设置索引,Slave B 则是针对应用 N 设置索引,然后把来自 M 的查询固定导向到 A、把来自 N 的查询固定导向到 B,一个分库的小技巧。
接下来是对前端的优化。由于可以自定义样式和显示效果,每个用户的界面几乎都是独一无二的。这里说后端是 MDB,我不清楚这里说的 MDB 指的是 Microsoft Access。由于页面是 RIA 的设计(Rich Interface Application),静态页面缓存了,但大量动态内容是在静态页面载入后载入的,动态内容的载入速度受到程序和设计上限制。这里的优化,其实也是很常见的优化手段:把 JavaScript 中修改页面样式的代码改为修改元素属性,把动态修改样式改为通过修改元素的属性(通常是 class)完成,而把样式定义输出到一个可缓存的 CSS 文件。实际上这也是 JavaScript 的优化:由于样式修改操作变为属性修改操作,reflow 的次数减低了,对于用户来说又是一个大大的体验优化,Google 的 Let's make the web faster 系列文章中介绍过通过 DOM 减少 reflow 的这个技巧,不过就是没有说到这样也间接避免了出现以前新浪博客常见的白屏现象。
不够他们的总结写得不好,看起来就是容易看晕,不知道在说什么。
公开说明做了的数据库层优化有三个。第一个是对位运算的应用,利用位运算来优化二选一的属性判断; @xmpp 老师曾在 Twitter 上向他人解释这点优化,我感觉这个技巧主要是利用了位运算的速度优势,但实际操作可能需要做点实验,例如在 blob/char 之间进行选择,以及索引添加与否的影响。其次是优化 Slave Server,由于查询需要满足大量条件,而不在 Slave Server 镜像大字段来缩减 Slave Server 上数据的体积,也间接优化了查询速度。最后就是把 Slave Server 按照需要进行设置,例如 Slave A 针对应用 M 重新设置索引,Slave B 则是针对应用 N 设置索引,然后把来自 M 的查询固定导向到 A、把来自 N 的查询固定导向到 B,一个分库的小技巧。
接下来是对前端的优化。由于可以自定义样式和显示效果,每个用户的界面几乎都是独一无二的。这里说后端是 MDB,我不清楚这里说的 MDB 指的是 Microsoft Access。由于页面是 RIA 的设计(Rich Interface Application),静态页面缓存了,但大量动态内容是在静态页面载入后载入的,动态内容的载入速度受到程序和设计上限制。这里的优化,其实也是很常见的优化手段:把 JavaScript 中修改页面样式的代码改为修改元素属性,把动态修改样式改为通过修改元素的属性(通常是 class)完成,而把样式定义输出到一个可缓存的 CSS 文件。实际上这也是 JavaScript 的优化:由于样式修改操作变为属性修改操作,reflow 的次数减低了,对于用户来说又是一个大大的体验优化,Google 的 Let's make the web faster 系列文章中介绍过通过 DOM 减少 reflow 的这个技巧,不过就是没有说到这样也间接避免了出现以前新浪博客常见的白屏现象。
不够他们的总结写得不好,看起来就是容易看晕,不知道在说什么。
标签: database, frontend, optimization


0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页