Preheat status cache

skylight
Eugen Rochko 2017-02-05 17:24:18 +01:00
parent 6fa4e01139
commit 19b9e1e2c3
4 changed files with 16 additions and 4 deletions

View 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

View File

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

View File

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

View File

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