forked from cybrespace/mastodon
		
	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…
	
	Add table
		
		Reference in a new issue