Rails应用性能优化(三)
源码优化: 数据库优化:1)N+1 查询问题--立即加载 一层嵌套:查询添加 Post.find(:all, :include=>[:category]) <%=p.category.name%> 2) N+1 查询问题--嵌套的立即加载 两层嵌套:查询添加 Post.find(:all, :include=>{ :category=>[],:author=>{ :image=>[]}} ) <%=p.category.name%><%=image_tag p.author.image.public_filename %> 3) N+1 查询问题--间接的立即加载 查询添加 User.find(5, :include=>{:posts=>[:user]}) <%@user = User.find(5) @user.posts.each do |p|%> <%=render :partial=>'posts/summary', :locals=>:post=>p %> <%end%> 当然,决定查询的数量需要对 posts/summary partial 有所了解。清单 8 中显示了这个 partial。清单 8. 间接立即加载 partial: posts/_summary.html.erb <h1><%=post.user.name%></h1>