--- /dev/null
+# 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
include Sidekiq::Worker
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
true
end
host: ENV['REDIS_HOST'] || 'localhost',
port: ENV['REDIS_PORT'] || 6379,
db: 0,
- namespace: 'cache'
+ namespace: 'cache',
+ expires_in: 1.minute,
}
config.public_file_server.headers = {
- 'Cache-Control' => 'public, max-age=172800'
+ 'Cache-Control' => 'public, max-age=172800',
}
else
config.action_controller.perform_caching = false
password: ENV.fetch('REDIS_PASSWORD') { false },
db: 0,
namespace: 'cache',
- expires_in: 20.minutes
+ expires_in: 20.minutes,
}
# Enable serving of images, stylesheets, and JavaScripts from an asset server.