about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-03-26 00:36:35 +0100
committerGitHub <noreply@github.com>2019-03-26 00:36:35 +0100
commit94e5e834f2ddbc791ab27e2ef17eb2f23140a6ba (patch)
tree6d6d82445651f10512c2a7a41a1421a95489d7a2
parenta96181f16f4ef74ce6a1efc5e893ddd87a127949 (diff)
Improve performance of list of blocked domains by caching counts (#10374)
-rw-r--r--app/models/instance.rb6
-rw-r--r--app/views/admin/instances/index.html.haml2
2 files changed, 6 insertions, 2 deletions
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 7448d465c..7bf000d40 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -7,7 +7,7 @@ class Instance
 
   def initialize(resource)
     @domain         = resource.domain
-    @accounts_count = resource.accounts_count
+    @accounts_count = resource.is_a?(DomainBlock) ? nil : resource.accounts_count
     @domain_block   = resource.is_a?(DomainBlock) ? resource : DomainBlock.find_by(domain: domain)
   end
 
@@ -15,6 +15,10 @@ class Instance
     Rails.cache.fetch("#{cache_key}/sample_accounts", expires_in: 12.hours) { Account.where(domain: domain).searchable.joins(:account_stat).popular.limit(3) }
   end
 
+  def cached_accounts_count
+    @accounts_count || Rails.cache.fetch("#{cache_key}/count", expires_in: 12.hours) { Account.where(domain: domain).count }
+  end
+
   def to_param
     domain
   end
diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml
index 235927140..9574c3147 100644
--- a/app/views/admin/instances/index.html.haml
+++ b/app/views/admin/instances/index.html.haml
@@ -33,7 +33,7 @@
       %h4
         = instance.domain
         %small
-          = t('admin.instances.known_accounts', count: instance.accounts_count)
+          = t('admin.instances.known_accounts', count: instance.cached_accounts_count)
 
           - if instance.domain_block
             - if !instance.domain_block.noop?