Preheat status cache
This commit is contained in:
parent
6fa4e01139
commit
19b9e1e2c3
4 changed files with 16 additions and 4 deletions
8
app/services/warm_cache_service.rb
Normal file
8
app/services/warm_cache_service.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class WarmCacheService < BaseService
|
||||||
|
def call(cacheable)
|
||||||
|
full_item = cacheable.class.where(id: cacheable.id).with_includes.first
|
||||||
|
Rails.cache.write(cacheable.cache_key, full_item)
|
||||||
|
end
|
||||||
|
end
|
|
@ -4,7 +4,10 @@ class DistributionWorker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
def perform(status_id)
|
def perform(status_id)
|
||||||
FanOutOnWriteService.new.call(Status.find(status_id))
|
status = Status.find(status_id)
|
||||||
|
|
||||||
|
FanOutOnWriteService.new.call(status)
|
||||||
|
WarmCacheService.new.call(status)
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,11 +20,12 @@ Rails.application.configure do
|
||||||
host: ENV['REDIS_HOST'] || 'localhost',
|
host: ENV['REDIS_HOST'] || 'localhost',
|
||||||
port: ENV['REDIS_PORT'] || 6379,
|
port: ENV['REDIS_PORT'] || 6379,
|
||||||
db: 0,
|
db: 0,
|
||||||
namespace: 'cache'
|
namespace: 'cache',
|
||||||
|
expires_in: 1.minute,
|
||||||
}
|
}
|
||||||
|
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
'Cache-Control' => 'public, max-age=172800'
|
'Cache-Control' => 'public, max-age=172800',
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
config.action_controller.perform_caching = false
|
config.action_controller.perform_caching = false
|
||||||
|
|
|
@ -64,7 +64,7 @@ Rails.application.configure do
|
||||||
password: ENV.fetch('REDIS_PASSWORD') { false },
|
password: ENV.fetch('REDIS_PASSWORD') { false },
|
||||||
db: 0,
|
db: 0,
|
||||||
namespace: 'cache',
|
namespace: 'cache',
|
||||||
expires_in: 20.minutes
|
expires_in: 20.minutes,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||||
|
|
Loading…
Reference in a new issue