Introduce some caching for diary views.
This commit is contained in:
parent
d7f1186825
commit
314b734aa5
4 changed files with 73 additions and 0 deletions
34
app/models/diary_sweeper.rb
Normal file
34
app/models/diary_sweeper.rb
Normal file
|
@ -0,0 +1,34 @@
|
|||
class DiarySweeper < ActionController::Caching::Sweeper
|
||||
observe DiaryComment, DiaryEntry
|
||||
|
||||
def after_create(record)
|
||||
expire_cache_for(record)
|
||||
end
|
||||
|
||||
def after_update(record)
|
||||
expire_cache_for(record)
|
||||
end
|
||||
|
||||
def after_destroy(record)
|
||||
expire_cache_for(record)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def expire_cache_for(record)
|
||||
case
|
||||
when record.is_a?(DiaryEntry): entry = record
|
||||
when record.is_a?(DiaryComment): entry = record.diary_entry
|
||||
end
|
||||
|
||||
expire_action(:controller => 'diary_entry', :action => 'view', :id => entry.id)
|
||||
|
||||
expire_action(:controller => 'diary_entry', :action => 'list', :language => nil, :display_name => nil)
|
||||
expire_action(:controller => 'diary_entry', :action => 'list', :language => entry.language_code, :display_name => nil)
|
||||
expire_action(:controller => 'diary_entry', :action => 'list', :language => nil, :display_name => entry.user.display_name)
|
||||
|
||||
expire_action(:controller => 'diary_entry', :action => 'rss', :language => nil, :display_name => nil)
|
||||
expire_action(:controller => 'diary_entry', :action => 'rss', :language => entry.language_code, :display_name => nil)
|
||||
expire_action(:controller => 'diary_entry', :action => 'rss', :language => nil, :display_name => entry.user.display_name)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue