#2 楼 @PrideChung 这可是很正经的!
as_bs
Basecamp 是用轮询。
<% cache @todolist do %> <!-- level 1 -->
<% @todolist.todos.each do |todo| %>
<% cache todo do %> <!-- level 2 -->
<div class="todo">
<b><%= todo.user.name %></b>
<%= todo.content %>
</div>
<% end %>
<% end %>
<% end %>
includes
不是魔法,看看 logger 它是通过什么查询语句实现的。
#3 楼 @lukefan 由于不知道你的内容怎么展示,我用 post 为例
<% @posts.each do |post| %>
<div class="post">
<b><%= post.user.name %></b>
<%= format_post psot.content %>
</div>
<% end %>
这里优化方法不是在 @posts
查询 includes(:user),而是应该加上片段缓存
<% @posts.each do |post| %>
<% cache post do %>
<div class="post">
<b><%= post.user.name %></b>
<%= format_post psot.content %>
</div>
<% end %>
<% end %>
这样每次只要查询 @posts
,虽然 post
内容在渲染时候需要查询 user
,但之后就会缓存起来。反而,如果用了 includes,无论有没有缓存,每次查询 @posts
的时候都要查 user
,这是不必要的消耗。
includes
对关系数据库有用,比如 todolists has_many todos,展示 todolists 内容的时候总是需要查询 todos 的,用 includes
可以用 join
把两次查询合成一次,但 mongodb 没有 join,所以没有什么意义。
去掉 include,父级元素片段缓存。
哈哈哈,文末推荐我的博客,然后我的博客推荐官方文档,形成循环。
Agile Web Development with Rails & Programing Ruby
简称两本红宝书。
Sound Only 最屌。
#8 楼 @moliliang 两个方面入手:
比如我的一些提交太乱(什么),合并 master 之后,老会出一些细节问题(什么)。
修改后(什么),我又重新提交(怎么),同事还是还是觉得我的提交太乱了(什么)~不敢合并我的分支。
#19 楼 @jeff_duan 减少依赖,Rails 默认用 sass。