Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Lee <huacnlee@gmail.com>2015-11-12 12:19:03 +0300
committerJason Lee <huacnlee@gmail.com>2015-11-12 12:19:03 +0300
commit2e4a673cbc1a43532e8aa096e4ab5ca034b804f7 (patch)
tree48944305445797f8eb72ec01b7621e54b71c8e29 /app/models/application_setting.rb
parentca25289b78e1b49148438831ad6bf165fa0ce56e (diff)
Add caching for ApplicationSetting, Ci::ApplicationSetting.
ApplicationSetting.current was called in every pages, cache it and expires it after it updated. This changes will avoid a SQL query in every pages (~0.3 - 0.5ms). ```SQL SELECT "application_settings".* FROM "application_settings" ORDER BY "application_settings"."id" DESC LIMIT 1 ```
Diffstat (limited to 'app/models/application_setting.rb')
-rw-r--r--app/models/application_setting.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 266045f7afa..5a9e55a95f4 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -68,8 +68,14 @@ class ApplicationSetting < ActiveRecord::Base
end
end
+ after_commit do
+ Rails.cache.write('application_setting.last', self)
+ end
+
def self.current
- ApplicationSetting.last
+ Rails.cache.fetch('application_setting.last') do
+ ApplicationSetting.last
+ end
end
def self.create_from_defaults