Read about our upcoming Code of Conduct on this issue

Commit 8ad1f8a4 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

activities page caching

parent 4e4dbdbdf08e
......@@ -67,7 +67,7 @@ def update
def show
return render "projects/empty" unless @project.repo_exists?
limit = (params[:limit] || 20).to_i
@activities = @project.updates(limit)
@activities = @project.cached_updates(limit)
end
#
......
......@@ -143,6 +143,23 @@ def last_activity_date
last_activity.try(:created_at)
end
# Get project updates from cache
# or calculate.
def cached_updates(limit, expire = 2.minutes)
activities_key = "project_#{id}_activities"
cached_activities = Rails.cache.read(activities_key)
if cached_activities
activities = cached_activities
else
activities = updates(limit)
Rails.cache.write(activities_key, activities, :expires_in => 60.seconds)
end
activities
end
# Get 20 events for project like
# commits, issues or notes
def updates(n = 3)
[
fresh_commits(n),
......
......@@ -37,7 +37,7 @@
# config.logger = SyslogLogger.new
# Use a different cache store in production
# config.cache_store = :mem_cache_store
config.cache_store = :memory_store
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment