From e1eb377a92ae8d6ff343d6949e22a3f9b53f0180 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 5 Jun 2014 01:23:10 -0700 Subject: [PATCH] optimize performance for site profile render --- models/comment.rb | 2 +- models/event.rb | 2 +- models/site_change.rb | 2 +- views/_follows.erb | 18 ++--- views/_news.erb | 135 ++++---------------------------------- views/_news_actions.erb | 8 +-- views/_news_templates.erb | 2 +- views/site.erb | 40 +++-------- 8 files changed, 38 insertions(+), 171 deletions(-) diff --git a/models/comment.rb b/models/comment.rb index c09e7442..3758c038 100644 --- a/models/comment.rb +++ b/models/comment.rb @@ -5,7 +5,7 @@ class Comment < Sequel::Model one_to_many :comment_likes def liking_site_names - comment_likes.collect {|comment_like| comment_like.actioning_site.username } + comment_likes_dataset.select(:id, :actioning_site_id).all.collect {|comment_like| comment_like.actioning_site_dataset.select(:username).first.username } end def site_likes?(site) diff --git a/models/event.rb b/models/event.rb index 8839fcd5..d63c8160 100644 --- a/models/event.rb +++ b/models/event.rb @@ -18,7 +18,7 @@ class Event < Sequel::Model end def liking_site_names - likes.collect {|like| like.actioning_site.username } + likes_dataset.select(:actioning_site_id).all.collect {|like| like.actioning_site_dataset.select(:username).first.username } end def add_site_comment(site, message) diff --git a/models/site_change.rb b/models/site_change.rb index 17b993e9..0423f2bf 100644 --- a/models/site_change.rb +++ b/models/site_change.rb @@ -6,7 +6,7 @@ class SiteChange < Sequel::Model one_to_many :site_change_files def site_change_filenames(limit=4) - site_change_files[0..limit-1].collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1} + site_change_files_dataset.select(:filename).limit(limit).all.collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1} end def self.record(site, filename) diff --git a/views/_follows.erb b/views/_follows.erb index 8cfdb49e..57c693c8 100644 --- a/views/_follows.erb +++ b/views/_follows.erb @@ -1,24 +1,26 @@ -<% if (!is_current_site && site.followings_dataset.count > 0) || is_current_site %> +<% site_followings = site.followings %> +<% if (!is_current_site && !site_followings.empty?) || is_current_site %>

<%= is_current_site ? 'You follow' : 'This site follows' %>

- <% if site.followings_dataset.count == 0 %> + <% if site_followings.empty? %>

You are not following any sites yet. Add some by browsing sites or looking at your tags. <% else %> - <% site.followings.each do |following| %> - + <% site.followings_dataset.select(:site_id).all.each do |following| %> + <% end %> <% end %>

<% end %> -<% if (!is_current_site && site.follows_dataset.count > 0) || is_current_site %> +<% if (!is_current_site && !site_followings.empty?) || is_current_site %>

Followers

- <% if site.follows_dataset.count == 0 %> + <% if site_followings.empty? %> No followers yet. <% else %> - <% site.follows.each do |follow| %> - + <% site.follows_dataset.select(:actioning_site_id).all.each do |follow| %> + <% follow_actioning_site = follow.actioning_site_dataset.select(:username).first %> + <% end %> <% end %>
diff --git a/views/_news.erb b/views/_news.erb index 961e73d2..8302a53e 100644 --- a/views/_news.erb +++ b/views/_news.erb @@ -13,13 +13,16 @@
- <%= event.actioning_site.username %> followed <%= event.site.username %>'s website<%= event.created_at.ago %> + <% actioning_site_username = event.actioning_site_dataset.select(:username).first.username %> + <% event_site_username = event.site_dataset.select(:username).first.username %> + <%= actioning_site_username %> followed <%= event_site_username %>'s website<%= event.created_at.ago %>
<% elsif event.site_change_id %>
- <%= site.username %>.neocities.org has been updated <%= event.created_at.ago %> + <% event_site_username = event.site_dataset.select(:username).first.username %> + <%= event_site_username %>.neocities.org has been updated <%= event.created_at.ago %>
@@ -41,23 +44,6 @@
<% end %> -
<% end %> @@ -68,20 +54,20 @@
<% event.comments.each do |comment| %> + <% comment_actioning_site = comment.actioning_site_dataset.select(:username).first %>
- - <%= comment.actioning_site.username %> + + <%= comment_actioning_site.username %> <%= comment.created_at.ago %>

<%= comment.message %>

- + <% comment_likes_count = comment.comment_likes_dataset.count %> <% if current_site %> - <%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment.comment_likes_dataset.count > 0 ? " (#{comment.comment_likes_dataset.count})" : '' %> + <%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment_likes_count > 0 ? " (#{comment_likes_count})" : '' %> <% else %> - <% comment_like_count = comment.comment_likes_dataset.count %> - <% if comment_like_count > 0 %> - <%= comment_like_count %> <%= comment_like_count == 1 ? 'like' : 'likes' %> + <% if comment_likes_count > 0 %> + <%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %> <% end %> <% end %> @@ -101,100 +87,3 @@ <% end %> <%== erb :'_news_templates', layout: false %> - - diff --git a/views/_news_actions.erb b/views/_news_actions.erb index 511692d9..0b8a4f40 100644 --- a/views/_news_actions.erb +++ b/views/_news_actions.erb @@ -1,10 +1,10 @@
+ <% event_likes_count = event.likes_dataset.count %> <% if current_site %> - <%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event.likes_dataset.count > 0 ? " (#{event.likes_dataset.count})" : '' %> + <%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event_likes_count > 0 ? " (#{event_likes_count})" : '' %> <% else %> - <% event_like_count = event.likes_dataset.count %> - <% if event_like_count > 0 %> - <%= event_like_count %> <%= event_like_count == 1 ? 'like' : 'likes' %> + <% if event_likes_count > 0 %> + <%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %> <% end %> <% end %> <% if current_site %> diff --git a/views/_news_templates.erb b/views/_news_templates.erb index 7fb77338..df016880 100644 --- a/views/_news_templates.erb +++ b/views/_news_templates.erb @@ -10,4 +10,4 @@ Cancel -
\ No newline at end of file +
diff --git a/views/site.erb b/views/site.erb index 7317a9ec..b98cd4ef 100644 --- a/views/site.erb +++ b/views/site.erb @@ -13,15 +13,16 @@
<%= site.hits_english %> hits
<%= site.follows_dataset.count %> followers
-
<%= site.tips_dataset.count %> tips
+
<% end %> - <% if site.latest_events.empty? %> + <% latest_events = site.latest_events %> + <% if latest_events.empty? %>

No recent activity.

<% if site == current_site %> @@ -69,7 +71,7 @@ <% end %>
<% else %> - <%== erb :'_news', layout: false, locals: {site: site, events: site.events_dataset.order(:id.desc).all} %> + <%== erb :'_news', layout: false, locals: {site: site, events: latest_events} %> <% end %>
@@ -93,7 +95,7 @@ <%== erb :'_follows', layout: false, locals: {site: site, is_current_site: site == current_site} %> -