mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-11 01:05:01 -04:00
Improve read performance with caching and memoization (#4572)
* Improve read performance with caching and memoization - Memoize `Crop#all_companions` and `Member#unread_count` in models - Implement instance-level memoization in `CropsHelper#crop_or_parent` - Add Rails caching for expensive aggregate queries in `Charts::CropsController` - Add fragment caching for high-impact sections on the crop show page Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com> * Fix header spec failure due to memoized unread_count - Reset `@unread_count` in `spec/views/layouts/_header_spec.rb` to ensure the updated notification count is rendered correctly. Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
@@ -165,9 +165,11 @@ class Crop < ApplicationRecord
|
||||
end
|
||||
|
||||
def all_companions
|
||||
return companions unless parent
|
||||
|
||||
(companions + parent.all_companions).uniq
|
||||
@all_companions ||= if parent
|
||||
(companions + parent.all_companions).uniq
|
||||
else
|
||||
companions
|
||||
end
|
||||
end
|
||||
|
||||
before_destroy :destroy_reverse_companionships
|
||||
|
||||
@@ -36,10 +36,11 @@
|
||||
= cute_icon
|
||||
= render 'predictions', crop: @crop
|
||||
- if @crop.all_companions.any?
|
||||
%section.companions
|
||||
%h2 Companions
|
||||
- @crop.all_companions.each do |companion|
|
||||
= render 'crops/tiny', crop: companion
|
||||
- cache [@crop, 'companions'] do
|
||||
%section.companions
|
||||
%h2 Companions
|
||||
- @crop.all_companions.each do |companion|
|
||||
= render 'crops/tiny', crop: companion
|
||||
|
||||
- if crop_or_parent(@crop, :en_youtube_url).present?
|
||||
%section.youtube
|
||||
|
||||
Reference in New Issue
Block a user