cache stats and member thumbnails on homepage

This commit is contained in:
Skud
2013-08-14 11:47:09 +10:00
parent 46aa6ec758
commit 5d3a44ae0c
11 changed files with 76 additions and 34 deletions

View File

@@ -1,6 +1,8 @@
class CropsController < ApplicationController
load_and_authorize_resource
cache_sweeper :crop_sweeper
# GET /crops
# GET /crops.json
def index

View File

@@ -1,5 +1,8 @@
class GardensController < ApplicationController
load_and_authorize_resource
cache_sweeper :garden_sweeper
# GET /gardens
# GET /gardens.json
def index

View File

@@ -1,5 +1,8 @@
class MembersController < ApplicationController
load_and_authorize_resource
cache_sweeper :member_sweeper
skip_authorize_resource :only => :nearby
def index

View File

@@ -1,6 +1,7 @@
class RegistrationsController < Devise::RegistrationsController
cache_sweeper :member_sweeper
def edit
@twitter_auth = current_member.auth('twitter')
@flickr_auth = current_member.auth('flickr')

View File

@@ -0,0 +1,13 @@
class CropSweeper < ActionController::Caching::Sweeper
observe Crop
def after_create(crop)
expire_fragment('homepage_stats')
end
def after_destroy(crop)
expire_fragment('homepage_stats')
end
end

View File

@@ -0,0 +1,12 @@
class GardenSweeper < ActionController::Caching::Sweeper
observe Garden
def after_create(garden)
expire_fragment('homepage_stats')
end
def after_destroy(garden)
expire_fragment('homepage_stats')
end
end

View File

@@ -0,0 +1,13 @@
class MemberSweeper < ActionController::Caching::Sweeper
observe Member
def after_create(member)
expire_fragment('homepage_stats')
end
def after_update(member)
expire_fragment("member_thumbnail_#{member.slug}")
end
end

View File

@@ -2,20 +2,13 @@ class PlantingSweeper < ActionController::Caching::Sweeper
observe Planting
def after_create(planting)
expire_cache_for(planting)
end
def after_update(planting)
expire_cache_for(planting)
expire_fragment('homepage_stats')
expire_fragment("member_thumbnail_#{planting.owner.slug}")
end
def after_destroy(planting)
expire_cache_for(planting)
expire_fragment('homepage_stats')
end
private
def expire_cache_for(planting)
expire_fragment('recent_plantings')
end
end

View File

@@ -1,9 +1,10 @@
%p.stats
So far,
= link_to "#{@member_count.to_i} members", members_path
have planted
= link_to "#{@crop_count.to_i} crops", crops_path
= link_to "#{@planting_count.to_i} times", plantings_path
in
= succeed "." do
= link_to "#{@garden_count.to_i} gardens", gardens_path
- cache("homepage_stats") do
%p.stats
So far,
= link_to "#{@member_count.to_i} members", members_path
have planted
= link_to "#{@crop_count.to_i} crops", crops_path
= link_to "#{@planting_count.to_i} times", plantings_path
in
= succeed "." do
= link_to "#{@garden_count.to_i} gardens", gardens_path

View File

@@ -1,13 +1,14 @@
.row-fluid
.span3
= render :partial => "members/image_with_popover", :locals => { :member => member }
.span9
%p
= link_to member.login_name, member
- if ! member.location.blank?
%br/
%i= member.location
- if ! member.plantings.empty?
%br/
Recently planted:
!= member.plantings.first(3).map{|p| link_to p.crop_system_name, p }.join(", ")
- cache "member_thumbnail_#{member.slug}" do
.row-fluid
.span3
= render :partial => "members/image_with_popover", :locals => { :member => member }
.span9
%p
= link_to member.login_name, member
- if ! member.location.blank?
%br/
%i= member.location
- if ! member.plantings.empty?
%br/
Recently planted:
!= member.plantings.first(3).map{|p| link_to p.crop_system_name, p }.join(", ")

View File

@@ -13,7 +13,7 @@ Growstuff::Application.configure do
config.consider_all_requests_local = true
# cache for testing/experimentation - turn off for normal dev use
config.action_controller.perform_caching = false
config.action_controller.perform_caching = true
config.cache_store = :memory_store
# Don't care if the mailer can't send