mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 04:38:47 +08:00
PERF: remove superflous queries from initial page loads
stop doing expensive work to figure out discourse style sheet
This commit is contained in:
@ -7,13 +7,37 @@ class DiscourseStylesheets
|
||||
MANIFEST_FULL_PATH = "#{MANIFEST_DIR}/stylesheet-manifest"
|
||||
|
||||
@lock = Mutex.new
|
||||
@links = {}
|
||||
|
||||
def self.ensure_subscribed!
|
||||
unless @subscribed
|
||||
@lock.synchronize do
|
||||
MessageBus.subscribe("/discourse_stylesheet") do |message|
|
||||
@lock.synchronize do
|
||||
@links[message.site_id] = nil
|
||||
end
|
||||
end
|
||||
@subscribed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.stylesheet_link_tag(target = :desktop)
|
||||
builder = self.new(target)
|
||||
ensure_subscribed!
|
||||
@lock.synchronize do
|
||||
builder.compile unless File.exists?(builder.stylesheet_fullpath)
|
||||
builder.ensure_digestless_file
|
||||
%[<link href="#{Rails.env.production? ? builder.stylesheet_relpath : builder.stylesheet_relpath_no_digest + '?body=1'}" media="all" rel="stylesheet" />].html_safe
|
||||
links = (@links[RailsMultisite::ConnectionManagement.current_db] ||= {})
|
||||
tag = links[target]
|
||||
|
||||
if !tag
|
||||
builder = self.new(target)
|
||||
builder.compile unless File.exists?(builder.stylesheet_fullpath)
|
||||
builder.ensure_digestless_file
|
||||
tag = %[<link href="#{Rails.env.production? ? builder.stylesheet_relpath : builder.stylesheet_relpath_no_digest + '?body=1'}" media="all" rel="stylesheet" />].html_safe
|
||||
|
||||
links[target] = tag
|
||||
end
|
||||
|
||||
tag
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user