BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Bullet:提升Rails性能的子弹

| 作者 丁雪丰 关注 3 他的粉丝 发布于 2009年11月14日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

在前段时间结束的Kungfu Rails大会上,黄志敏先生(Richard Huang)带来了一个关于如何通过插件、Gem的方式为Rails项目做贡献的主题。Richard开发了很多实用性很强的插件和Gem,Bullet就是其中之一。

设计Bullet插件/Gem的目的是通过减少查询的数量帮助开发者提升应用程序的性能。它会在你开发时监视应用程序的查询,并在应该添加Eager Loading(N+1查询)时给出提示;在无需使用Eager Loading或应该使用计数器缓存时,它同样会给出提示。

Bullet并不直接提升性能,它只是给出一些提示,指出哪些地方可以得到改善,随后由开发者自行添加:include或者:counter_cache

Bullet的使用非常方便,以插件或Gem方式安装后,经过简单配置即可直接使用(新版本增加了Growl支持,对于非MacOS用户,可以关闭该功能)。

config.after_initialize do
  Bullet.enable = true
  Bullet.alert = true
  Bullet.bullet_logger = true  
  Bullet.console = true
  Bullet.growl = true
  Bullet.rails_logger = true
  Bullet.disable_browser_cache = true
end

在开发环境下启动服务器,访问页面时,Bullet会弹出提示,告知可以改进的地方,同时在Bullet的日志中也会有相应记录。例如,项目提供的范例中就指出存在Post对Comment关系的N+1查询,开发者可以很快做出修改:

The request has unused preload associations as follows:
None
The request has N+1 queries as follows:
model: Post => associations: [comment]

Bullet最近正受到越来越多的关注,最新一期的Scaling Rails – On The Edge – Part 1中第一个就介绍了Bullet,Ruby5RailsInSide也有相关报道,俨然是一枚提升性能的子弹。期待有更多国内开发者能积极贡献自己的力量,为开源社区添砖加瓦。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT