Ruby Rails 4:对优化这个应用程序有什么建议吗?呈现:帖子/索引和其他
我为这个rails 4应用程序安装了gem“rack mini profiler”,它出现了一些问题。如何优化下面的列表?我不知道如何解决它,任何帮助将不胜感激,我附上照片 PostsController.rbRuby Rails 4:对优化这个应用程序有什么建议吗?呈现:帖子/索引和其他,ruby,ruby-on-rails-4,optimization,Ruby,Ruby On Rails 4,Optimization,我为这个rails 4应用程序安装了gem“rack mini profiler”,它出现了一些问题。如何优化下面的列表?我不知道如何解决它,任何帮助将不胜感激,我附上照片 PostsController.rb class PostsController < ApplicationController before_action :find_post, only: [:show, :edit, :update, :destroy, :upvote, :downvote] b
class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy, :upvote, :downvote]
before_action :authenticate_user!, except: [:index, :show]
def index
@users = User.all
if
params[:category].blank?
@posts = Post.all.order(:cached_votes_score => :desc).paginate(page:params[:page], per_page: 8 )
else
@category_id = Category.all
@category_id = Category.find_by(name: params[:category]).id
@posts = Post.where(category_id: @category_id).order(:cached_votes_up => :desc).paginate(page:params[:page], per_page: 8 )
end
if @user = current_user
@post = current_user.posts.build
@purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
@sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
else
end
end
private
def find_post
@post = Post.find(params[:id])
if @user = current_user
@purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
@sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
end
end
def post_params
params.require(:post).permit(:title, :link, :description, :category_id, :banner, :user_id)
end
end
class PostsController:desc).paginate(页面:参数[:页面],每页:8)
其他的
@category\u id=category.all
@category_id=category.find_by(name:params[:category]).id
@posts=Post.where(category\u id:@category\u id).顺序(:cached\u voces\u up=>:desc).分页(page:params[:page],per\u page:8)
结束
如果@user=当前用户
@post=当前_user.posts.build
@购买=销售。其中(买方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
@sales=Sale.where(卖方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
其他的
结束
结束
私有的
def find_post
@post=post.find(参数[:id])
如果@user=当前用户
@购买=销售。其中(买方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
@sales=Sale.where(卖方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
结束
结束
def post_参数
参数require(:post).permit(:title,:link,:description,:category\u id,:banner,:user\u id)
结束
结束
这是index.html
<%= link_to "All", root_url, id:"category-color" %>
<% Category.all.each do |category| %>
<%= link_to category.name, posts_path(category: category.name), id:"category-color" %>
<% end %>
<% @posts.each do |post| %>
<% unless post.user.blank? %>
<%=link_to image_tag(post.user.avatar.url(:thumb)), post.user %> <%= link_to post.user.name.capitalize, post.user %> - <%= 'Published ' + time_ago_in_words(post.created_at) + ' ago' %>
<% if signed_in? %>
<% if @current_user.pending_friends.include?(post.user) %>
Pending Friend Request
<% else %>
<% end %>
<% if @current_user.friends.include?(post.user)%>
Friend
<% else %>
<% end %>
<% if post.user.pending_friends.include?(@current_user) %>
Friend Request
<% else %>
<% end %>
<% end %>
<% end %>
<% if post.user.subscribed == true %>
<%= link_to "Store", post.user %>
<%= link_to post.title, post %>
<%= post.get_likes.size %>
Likes
<%= post.get_dislikes.size %>
Dislikes
<%= post.comments.size %>
Comments
<% else %>
<%= post.title %><
<%= post.get_likes.size %>
Likes
<%= post.get_dislikes.size %>
Dislikes
<%= post.comments.size %>
Comments
<% end %>
<%= truncate( raw( sanitize(post.description, :tags => %w(table tr td), :attributes => %w(id class style) ) ), :length => 320, :omission => " ... ") %>
<%= link_to "Read", post_path(post) %>
<% end %>
-
待决好友请求
朋友
好友请求
喜欢
不喜欢
评论
<
喜欢
不喜欢
评论
%w(表tr td),:属性=>%w(id类样式)),:长度=>320,:省略=>“…”)%>
有很多问题,以下是索引控制器中的几个问题:
@category_id = Category.all
@category_id = Category.find_by(name: params[:category]).id
第一个“Category.all”是一个很大的不必要的请求,因为您会立即替换“@Category_id”的值
@purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
@sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
在这里,对查询执行两次“订单”,这也是完全不必要的
最后,在我看来,你似乎没有利用
@users = User.all
在代码中的任何地方,您都可以将其删除。更具体地说明问题所在exactly@Snappawapa,我在rails方面没有那么先进。主要问题是优化rails的内存使用。我注意到在heroku中,我遇到了错误R14(超过了内存配额),在研究之后,我被告知要优化应用程序。例如,如何优化
选择“类别”。*从“类别”中选择
rack mini profiler告诉我的时间为T+114.1 ms
这是一个更合适的问题,因为如果@user=current\u user将始终为真,除非current\u user
为nil
或false
,因为您只是在分配(=/code>)current\u user
到实例变量@user
,而不是进行逻辑比较,这将是=
。是的,特别是因为您似乎没有在任何地方使用或定义@user
。