Drop hostname from cache key
By default, Rails will cache example.com/mywiki/show/SomePage and www.example.com/mywiki/show/SomePage In Instiki, this just leads to stale cached pages and frustration. Fix that behaviour.
This commit is contained in:
parent
2ab04421a3
commit
ad049bcc4b
2 changed files with 21 additions and 0 deletions
|
@ -58,3 +58,4 @@ end
|
|||
require_dependency 'instiki_errors'
|
||||
|
||||
#require 'jcode'
|
||||
require 'caching_stuff'
|
||||
|
|
20
lib/caching_stuff.rb
Normal file
20
lib/caching_stuff.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
# based on http://pastie.org/49840
|
||||
# override the fragment_cache_key method in actionpack/lib/action_controller/caching/fragments.rb
|
||||
# to remove hostname in fragment caching
|
||||
# so instead of caching different fragments for "example.com/posts/list" and
|
||||
# "www.example.com/posts/list", instead it will just use "posts/list"
|
||||
module CachingStuff
|
||||
module ActionController
|
||||
module Caching
|
||||
module Fragments
|
||||
def fragment_cache_key(key)
|
||||
ActiveSupport::Cache.expand_cache_key(key.is_a?(Hash) ? url_for(key.merge(:host=>"")).split(":///").last : key.split('/')[1..-1].join('/'), :views)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ActionController::Base.class_eval do
|
||||
include CachingStuff::ActionController::Caching::Fragments
|
||||
end
|
Loading…
Reference in a new issue