Improve performance of list of blocked domains by caching counts (#10374)

shrike
Eugen Rochko 2019-03-26 00:36:35 +01:00 committed by GitHub
parent a96181f16f
commit 94e5e834f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 2 deletions

View File

@ -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

View File

@ -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?