mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:21:18 +08:00
PERF: stop querying banner topic on every page hit
This commit is contained in:
@ -7,6 +7,7 @@ require_dependency 'rate_limiter'
|
||||
require_dependency 'crawler_detection'
|
||||
require_dependency 'json_error'
|
||||
require_dependency 'letter_avatar'
|
||||
require_dependency 'distributed_cache'
|
||||
|
||||
class ApplicationController < ActionController::Base
|
||||
include CurrentUser
|
||||
@ -271,11 +272,21 @@ class ApplicationController < ActionController::Base
|
||||
MultiJson.dump(data)
|
||||
end
|
||||
|
||||
def banner_json
|
||||
topic = Topic.where(archetype: Archetype.banner).limit(1).first
|
||||
banner = topic.present? ? topic.banner : {}
|
||||
def self.banner_json_cache
|
||||
@banner_json_cache ||= DistributedCache.new("banner_json")
|
||||
end
|
||||
|
||||
MultiJson.dump(banner)
|
||||
def banner_json
|
||||
|
||||
json = ApplicationController.banner_json_cache["json"]
|
||||
|
||||
unless json
|
||||
topic = Topic.where(archetype: Archetype.banner).limit(1).first
|
||||
banner = topic.present? ? topic.banner : {}
|
||||
ApplicationController.banner_json_cache["json"] = json = MultiJson.dump(banner)
|
||||
end
|
||||
|
||||
json
|
||||
end
|
||||
|
||||
def render_json_error(obj)
|
||||
|
Reference in New Issue
Block a user