mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-28 16:36:48 +09:00
Preload only uncached messages and reduce rendering overhead (#292)
* Preload only uncached messages and reduce rendering overhead * Keep benchmark summaries without raw JSON results * Use Ruby benchmark drivers and keep generated results out of the repo
This commit is contained in:
1 parent
90b330024d
commit
659f95748a
17 files changed
+572
-24
No files matched your search
@@ -62,11 +62,11 @@ class MessagesController < ApplicationController
|
||||
def find_paged_messages
|
||||
case
|
||||
when params[:before].present?
|
||||
@room.messages.with_creator.page_before(@room.messages.find(params[:before]))
|
||||
@room.messages.with_presentation.page_before(@room.messages.find(params[:before]))
|
||||
when params[:after].present?
|
||||
@room.messages.with_creator.page_after(@room.messages.find(params[:after]))
|
||||
@room.messages.with_presentation.page_after(@room.messages.find(params[:after]))
|
||||
else
|
||||
@room.messages.with_creator.last_page
|
||||
@room.messages.with_presentation.last_page
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ class Rooms::RefreshesController < ApplicationController
|
||||
before_action :set_last_updated_at
|
||||
|
||||
def show
|
||||
@new_messages = @room.messages.with_creator.page_created_since(@last_updated_at)
|
||||
@updated_messages = @room.messages.without(@new_messages).with_creator.page_updated_since(@last_updated_at)
|
||||
@new_messages = @room.messages.with_presentation.page_created_since(@last_updated_at)
|
||||
@updated_messages = @room.messages.without(@new_messages).with_presentation.page_updated_since(@last_updated_at)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -44,9 +44,9 @@ class RoomsController < ApplicationController
|
||||
end
|
||||
|
||||
def find_messages
|
||||
messages = @room.messages.with_creator.with_attachment_details.with_boosts
|
||||
messages = @room.messages.with_presentation
|
||||
|
||||
if show_first_message = messages.find_by(id: params[:message_id])
|
||||
if params[:message_id].present? && (show_first_message = messages.find_by(id: params[:message_id]))
|
||||
@messages = messages.page_around(show_first_message)
|
||||
else
|
||||
@messages = messages.last_page
|
||||
|
||||
@@ -20,7 +20,7 @@ class SearchesController < ApplicationController
|
||||
private
|
||||
def set_messages
|
||||
if query.present?
|
||||
@messages = Current.user.reachable_messages.search(query).last(100)
|
||||
@messages = Current.user.reachable_messages.search(query).with_presentation.last_page_of(100)
|
||||
else
|
||||
@messages = Message.none
|
||||
end
|
||||
|
||||
@@ -2,18 +2,13 @@ class Users::SidebarsController < ApplicationController
|
||||
DIRECT_PLACEHOLDERS = 20
|
||||
|
||||
def show
|
||||
all_memberships = Current.user.memberships.visible.with_ordered_room
|
||||
@direct_memberships = extract_direct_memberships(all_memberships)
|
||||
@other_memberships = all_memberships.without(@direct_memberships)
|
||||
@direct_memberships, @other_memberships = Current.user.memberships.visible.with_ordered_room.partition { |membership| membership.room.direct? }
|
||||
@direct_memberships = @direct_memberships.sort_by { |membership| membership.room.updated_at }.reverse
|
||||
|
||||
@direct_placeholder_users = find_direct_placeholder_users
|
||||
end
|
||||
|
||||
private
|
||||
def extract_direct_memberships(all_memberships)
|
||||
all_memberships.select { |m| m.room.direct? }.sort_by { |m| m.room.updated_at }.reverse
|
||||
end
|
||||
|
||||
def find_direct_placeholder_users
|
||||
exclude_user_ids = user_ids_already_in_direct_rooms_with_current_user.including(Current.user.id)
|
||||
User.active.where.not(id: exclude_user_ids).order(:created_at).limit([ DIRECT_PLACEHOLDERS - exclude_user_ids.count, 0 ].max)
|
||||
|
||||
Reference in new issue
Block a user