thorero-cache 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README +160 -0
- data/Rakefile +59 -0
- data/TODO +2 -0
- data/lib/merb-cache.rb +10 -0
- data/lib/merb-cache/cache-action.rb +135 -0
- data/lib/merb-cache/cache-fragment.rb +95 -0
- data/lib/merb-cache/cache-page.rb +203 -0
- data/lib/merb-cache/cache-store/database-activerecord.rb +88 -0
- data/lib/merb-cache/cache-store/database-datamapper.rb +79 -0
- data/lib/merb-cache/cache-store/database-sequel.rb +78 -0
- data/lib/merb-cache/cache-store/database.rb +144 -0
- data/lib/merb-cache/cache-store/dummy.rb +106 -0
- data/lib/merb-cache/cache-store/file.rb +194 -0
- data/lib/merb-cache/cache-store/memcache.rb +199 -0
- data/lib/merb-cache/cache-store/memory.rb +168 -0
- data/lib/merb-cache/merb-cache.rb +165 -0
- data/lib/merb-cache/merbtasks.rb +6 -0
- data/spec/config/database.yml +14 -0
- data/spec/controller.rb +87 -0
- data/spec/log/merb_test.log +433 -0
- data/spec/merb-cache-action_spec.rb +137 -0
- data/spec/merb-cache-fragment_spec.rb +100 -0
- data/spec/merb-cache-page_spec.rb +150 -0
- data/spec/merb-cache_spec.rb +15 -0
- data/spec/spec_helper.rb +84 -0
- data/spec/views/cache_controller/action1.html.erb +4 -0
- data/spec/views/cache_controller/action2.html.haml +4 -0
- metadata +110 -0
@@ -0,0 +1,168 @@
|
|
1
|
+
class Merb::Cache::MemoryStore
|
2
|
+
# Provides the memory cache store for merb-cache
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@config = Merb::Controller._cache.config
|
6
|
+
@cache = {}
|
7
|
+
@mutex = Mutex.new
|
8
|
+
prepare
|
9
|
+
end
|
10
|
+
|
11
|
+
# This method is there to ensure minimal requirements are met
|
12
|
+
# (directories are accessible, table exists, connected to server, ...)
|
13
|
+
def prepare
|
14
|
+
true
|
15
|
+
end
|
16
|
+
|
17
|
+
# Checks whether a cache entry exists
|
18
|
+
#
|
19
|
+
# ==== Parameter
|
20
|
+
# key<String>:: The key identifying the cache entry
|
21
|
+
#
|
22
|
+
# ==== Returns
|
23
|
+
# true if the cache entry exists, false otherwise
|
24
|
+
def cached?(key)
|
25
|
+
if @cache.key?(key)
|
26
|
+
_data, _expire = *cache_read(key)
|
27
|
+
return true if _expire.nil? || Time.now < _expire
|
28
|
+
expire(key)
|
29
|
+
end
|
30
|
+
false
|
31
|
+
end
|
32
|
+
|
33
|
+
# Capture or restore the data in cache.
|
34
|
+
# If the cache entry expired or does not exist, the data are taken
|
35
|
+
# from the execution of the block, marshalled and stored in cache.
|
36
|
+
# Otherwise, the data are loaded from the cache and returned unmarshalled
|
37
|
+
#
|
38
|
+
# ==== Parameters
|
39
|
+
# _controller<Merb::Controller>:: The instance of the current controller
|
40
|
+
# key<String>:: The key identifying the cache entry
|
41
|
+
# from_now<~minutes>::
|
42
|
+
# The number of minutes (from now) the cache should persist
|
43
|
+
# &block:: The template to be used or not
|
44
|
+
#
|
45
|
+
# ==== Additional information
|
46
|
+
# When fetching data (the cache entry exists and has not expired)
|
47
|
+
# The data are loaded from the cache and returned unmarshalled.
|
48
|
+
# Otherwise:
|
49
|
+
# The controller is used to capture the rendered template (from the block).
|
50
|
+
# It uses the capture_#{engine} and concat_#{engine} methods to do so.
|
51
|
+
# The captured data are then marshalled and stored.
|
52
|
+
def cache(_controller, key, from_now = nil, &block)
|
53
|
+
if @cache.key?(key)
|
54
|
+
_data, _expire = *cache_read(key)
|
55
|
+
_cache_hit = _expire.nil? || Time.now < _expire
|
56
|
+
end
|
57
|
+
unless _cache_hit
|
58
|
+
_expire = from_now ? from_now.minutes.from_now : nil
|
59
|
+
_data = _controller.send(:capture, &block)
|
60
|
+
cache_write(key, [_data, _expire])
|
61
|
+
end
|
62
|
+
_controller.send(:concat, _data, block.binding)
|
63
|
+
true
|
64
|
+
end
|
65
|
+
|
66
|
+
# Store data to the file using the specified key
|
67
|
+
#
|
68
|
+
# ==== Parameters
|
69
|
+
# key<Sting>:: The key identifying the cache entry
|
70
|
+
# data<String>:: The data to be put in cache
|
71
|
+
# from_now<~minutes>::
|
72
|
+
# The number of minutes (from now) the cache should persist
|
73
|
+
def cache_set(key, data, from_now = nil)
|
74
|
+
_expire = from_now ? from_now.minutes.from_now : nil
|
75
|
+
cache_write(key, [data, _expire])
|
76
|
+
Merb.logger.info("cache: set (#{key})")
|
77
|
+
true
|
78
|
+
end
|
79
|
+
|
80
|
+
# Fetch data from the file using the specified key
|
81
|
+
# The entry is deleted if it has expired
|
82
|
+
#
|
83
|
+
# ==== Parameter
|
84
|
+
# key<Sting>:: The key identifying the cache entry
|
85
|
+
#
|
86
|
+
# ==== Returns
|
87
|
+
# data<String, NilClass>::
|
88
|
+
# nil is returned whether the entry expired or was not found
|
89
|
+
def cache_get(key)
|
90
|
+
if @cache.key?(key)
|
91
|
+
_data, _expire = *cache_read(key)
|
92
|
+
if _expire.nil? || Time.now < _expire
|
93
|
+
Merb.logger.info("cache: hit (#{key})")
|
94
|
+
return _data
|
95
|
+
end
|
96
|
+
@mutex.synchronize do @cache.delete(key) end
|
97
|
+
end
|
98
|
+
Merb.logger.info("cache: miss (#{key})")
|
99
|
+
nil
|
100
|
+
end
|
101
|
+
|
102
|
+
# Expire the cache entry identified by the given key
|
103
|
+
#
|
104
|
+
# ==== Parameter
|
105
|
+
# key<Sting>:: The key identifying the cache entry
|
106
|
+
def expire(key)
|
107
|
+
@mutex.synchronize do
|
108
|
+
@cache.delete(key)
|
109
|
+
end
|
110
|
+
Merb.logger.info("cache: expired (#{key})")
|
111
|
+
true
|
112
|
+
end
|
113
|
+
|
114
|
+
# Expire the cache entries matching the given key
|
115
|
+
#
|
116
|
+
# ==== Parameter
|
117
|
+
# key<Sting>:: The key matching the cache entries
|
118
|
+
def expire_match(key)
|
119
|
+
@mutex.synchronize do
|
120
|
+
@cache.delete_if do |k,v| k.match(/#{key}/) end
|
121
|
+
end
|
122
|
+
Merb.logger.info("cache: expired matching (#{key})")
|
123
|
+
true
|
124
|
+
end
|
125
|
+
|
126
|
+
# Expire all the cache entries
|
127
|
+
def expire_all
|
128
|
+
@mutex.synchronize do
|
129
|
+
@cache.clear
|
130
|
+
end
|
131
|
+
Merb.logger.info("cache: expired all")
|
132
|
+
true
|
133
|
+
end
|
134
|
+
|
135
|
+
# Gives info on the current cache store
|
136
|
+
#
|
137
|
+
# ==== Returns
|
138
|
+
# The type of the current cache store
|
139
|
+
def cache_store_type
|
140
|
+
"memory"
|
141
|
+
end
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
# Read data from the memory hash table using mutex
|
146
|
+
#
|
147
|
+
# ==== Parameters
|
148
|
+
# cache_file<String>:: The key identifying the cache entry
|
149
|
+
#
|
150
|
+
# ==== Returns
|
151
|
+
# _data<String>:: The data fetched from the cache
|
152
|
+
def cache_read(key)
|
153
|
+
@mutex.synchronize do
|
154
|
+
@cache[key]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# Write data to the memory hash table using mutex
|
159
|
+
#
|
160
|
+
# ==== Parameters
|
161
|
+
# cache_file<String>:: The key identifying the cache entry
|
162
|
+
# data<String>:: The data to be put in cache
|
163
|
+
def cache_write(key, data)
|
164
|
+
@mutex.synchronize do
|
165
|
+
@cache[key] = data
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
require "merb-cache/cache-action"
|
2
|
+
require "merb-cache/cache-page"
|
3
|
+
require "merb-cache/cache-fragment"
|
4
|
+
|
5
|
+
class Merb::Cache
|
6
|
+
attr_reader :config, :store
|
7
|
+
|
8
|
+
class StoreNotFound < Exception
|
9
|
+
def initialize(cache_store)
|
10
|
+
super("cache_store (#{cache_store}) not found (not implemented?)")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DEFAULT_CONFIG = {
|
15
|
+
:cache_html_directory => Merb.dir_for(:public) / "cache",
|
16
|
+
|
17
|
+
#:store => "database",
|
18
|
+
#:table_name => "merb_cache",
|
19
|
+
|
20
|
+
#:disable => "development", # disable merb-cache in development
|
21
|
+
#:disable => true, # disable merb-cache in all environments
|
22
|
+
|
23
|
+
:store => "file",
|
24
|
+
:cache_directory => Merb.root_path("tmp/cache"),
|
25
|
+
|
26
|
+
#:store => "memcache",
|
27
|
+
#:host => "127.0.0.1:11211",
|
28
|
+
#:namespace => "merb_cache",
|
29
|
+
#:track_keys => true,
|
30
|
+
|
31
|
+
#:store => "memory",
|
32
|
+
# store could be: file, memcache, memory, database, dummy, ...
|
33
|
+
}
|
34
|
+
|
35
|
+
# Called in the after_app_loads loop and instantiate the right backend
|
36
|
+
#
|
37
|
+
# ==== Raises
|
38
|
+
# Store#NotFound::
|
39
|
+
# If the cache_store mentionned in the config is unknown
|
40
|
+
def start
|
41
|
+
@config = DEFAULT_CONFIG.merge(Merb::Plugins.config[:merb_cache] || {})
|
42
|
+
if @config[:disable] == true || Merb.environment.to_s == @config[:disable].to_s
|
43
|
+
config[:disable_page_caching] = true
|
44
|
+
config[:store] = "dummy"
|
45
|
+
end
|
46
|
+
@config[:cache_html_directory] ||= Merb.dir_for(:public) / "cache"
|
47
|
+
require "merb-cache/cache-store/#{@config[:store]}"
|
48
|
+
@store = Merb::Cache.const_get("#{@config[:store].capitalize}Store").new
|
49
|
+
Merb.logger.info("Using #{@config[:store]} cache")
|
50
|
+
rescue LoadError
|
51
|
+
raise Merb::Cache::StoreNotFound, @config[:store].inspect
|
52
|
+
end
|
53
|
+
|
54
|
+
# Compute a cache key and yield it to the given block
|
55
|
+
# It is used by the #expire_page, #expire_action and #expire methods.
|
56
|
+
#
|
57
|
+
# ==== Parameters
|
58
|
+
# options<String, Hash>:: The key or the Hash that will be used to build the key
|
59
|
+
# controller<String>:: The name of the controller
|
60
|
+
# controller_based<Boolean>:: only used by action and page caching
|
61
|
+
#
|
62
|
+
# ==== Options (options)
|
63
|
+
# :key<String>:: The complete or partial key that will be computed.
|
64
|
+
# :action<String>:: The action name that will be used to compute the key
|
65
|
+
# :controller<String>:: The controller name that will be part of the key
|
66
|
+
# :params<Array[String]>::
|
67
|
+
# The params will be joined together (with '/') and added to the key
|
68
|
+
# :match<Boolean, String>::
|
69
|
+
# true, it will try to match multiple cache entries
|
70
|
+
# string, shortcut for {:key => "mykey", :match => true}
|
71
|
+
#
|
72
|
+
# ==== Examples
|
73
|
+
# expire(:key => "root_key", :params => [session[:me], params[:id]])
|
74
|
+
# expire(:match => "root_key")
|
75
|
+
# expire_action(:action => 'list')
|
76
|
+
# expire_page(:action => 'show', :controller => 'news')
|
77
|
+
#
|
78
|
+
# ==== Returns
|
79
|
+
# The result of the given block
|
80
|
+
#
|
81
|
+
def expire_key_for(options, controller, controller_based = false)
|
82
|
+
key = ""
|
83
|
+
if options.is_a? Hash
|
84
|
+
case
|
85
|
+
when key = options[:key]
|
86
|
+
when action = options[:action]
|
87
|
+
controller = options[:controller] || controller
|
88
|
+
key = "/#{controller}/#{action}"
|
89
|
+
when match = options[:match]
|
90
|
+
key = match
|
91
|
+
end
|
92
|
+
if _params = options[:params]
|
93
|
+
key += "/" + _params.join("/")
|
94
|
+
end
|
95
|
+
yield key, !options[:match].nil?
|
96
|
+
else
|
97
|
+
yield controller_based ? "/#{controller}/#{options}" : options, false
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Compute a cache key based on the given parameters
|
102
|
+
# Only used by the #cached_page?, #cached_action?, #cached?, #cache,
|
103
|
+
# #cache_get and #cache_set methods
|
104
|
+
#
|
105
|
+
# ==== Parameters
|
106
|
+
# options<String, Hash>:: The key or the Hash that will be used to build the key
|
107
|
+
# controller<String>:: The name of the controller
|
108
|
+
# controller_based<Boolean>:: only used by action and page caching
|
109
|
+
#
|
110
|
+
# ==== Options (options)
|
111
|
+
# :key<String>:: The complete or partial key that will be computed.
|
112
|
+
# :action<String>:: The action name that will be used to compute the key
|
113
|
+
# :controller<String>:: The controller name that will be part of the key
|
114
|
+
# :params<Array[String]>::
|
115
|
+
# The params will be joined together (with '/') and added to the key
|
116
|
+
#
|
117
|
+
# ==== Examples
|
118
|
+
# cache_set("my_key", @data)
|
119
|
+
# cache_get(:key => "root_key", :params => [session[:me], params[:id]])
|
120
|
+
#
|
121
|
+
# ==== Returns
|
122
|
+
# The computed key
|
123
|
+
def key_for(options, controller, controller_based = false)
|
124
|
+
key = ""
|
125
|
+
if options.is_a? Hash
|
126
|
+
case
|
127
|
+
when key = options[:key]
|
128
|
+
when action = options[:action]
|
129
|
+
controller = options[:controller] || controller
|
130
|
+
key = "/#{controller}/#{action}"
|
131
|
+
end
|
132
|
+
if _params = options[:params]
|
133
|
+
key += "/" + _params.join("/")
|
134
|
+
end
|
135
|
+
else
|
136
|
+
key = controller_based ? "/#{controller}/#{options}" : options
|
137
|
+
end
|
138
|
+
key
|
139
|
+
end
|
140
|
+
|
141
|
+
module ControllerInstanceMethods
|
142
|
+
# Mixed in Merb::Controller and provides expire_all for action and fragment caching.
|
143
|
+
def expire_all
|
144
|
+
Merb::Controller._cache.store.expire_all
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
module Merb
|
150
|
+
class Controller
|
151
|
+
cattr_reader :_cache
|
152
|
+
@@_cache = Merb::Cache.new
|
153
|
+
# extends Merb::Controller with new instance methods
|
154
|
+
include Merb::Cache::ControllerInstanceMethods
|
155
|
+
class << self
|
156
|
+
# extends Merb::Controller with new class methods
|
157
|
+
include Merb::Cache::ControllerClassMethods
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
Merb::BootLoader.after_app_loads do
|
163
|
+
# the cache starts after the application is loaded
|
164
|
+
Merb::Controller._cache.start
|
165
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
:development: &defaults
|
3
|
+
:adapter: sqlite3
|
4
|
+
:database: tmp/merb-cache.sqlite3
|
5
|
+
:log_stream: log/sql.log
|
6
|
+
:log_level: 0
|
7
|
+
|
8
|
+
:test:
|
9
|
+
<<: *defaults
|
10
|
+
:database: tmp/merb-cache.sqlite3
|
11
|
+
|
12
|
+
:production:
|
13
|
+
<<: *defaults
|
14
|
+
:database: tmp/merb-cache.sqlite3
|
data/spec/controller.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
class CacheController < Merb::Controller
|
2
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
3
|
+
|
4
|
+
cache_action :action3
|
5
|
+
cache_action :action4, 0.05
|
6
|
+
# or cache_actions :action3, [:action4, 0.05]
|
7
|
+
|
8
|
+
cache_page :action5
|
9
|
+
cache_page :action6, 0.05
|
10
|
+
# or cache_pages :action5, [:action6, 0.05]
|
11
|
+
cache_page :action7
|
12
|
+
|
13
|
+
cache_action :action8, 0.05, :if => proc {|controller| !controller.params[:id].empty?}
|
14
|
+
cache_action :action9, 0.05, :unless => proc {|controller| controller.params[:id].empty?}
|
15
|
+
cache_action :action10, :if => :non_empty_id?
|
16
|
+
cache_action :action11, :unless => :empty_id?
|
17
|
+
|
18
|
+
def action1
|
19
|
+
render
|
20
|
+
end
|
21
|
+
|
22
|
+
def action2
|
23
|
+
render
|
24
|
+
end
|
25
|
+
|
26
|
+
def action3
|
27
|
+
"test action3"
|
28
|
+
end
|
29
|
+
|
30
|
+
def action4
|
31
|
+
"test action4"
|
32
|
+
end
|
33
|
+
|
34
|
+
def action5
|
35
|
+
"test action5"
|
36
|
+
end
|
37
|
+
|
38
|
+
def action6
|
39
|
+
Time.now.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
def action7
|
43
|
+
provides :js, :css, :html, :xml, :jpg
|
44
|
+
case params[:format]
|
45
|
+
when "css"
|
46
|
+
"CSS"
|
47
|
+
when "js"
|
48
|
+
"JS"
|
49
|
+
when "html"
|
50
|
+
"HTML"
|
51
|
+
when "xml"
|
52
|
+
"XML"
|
53
|
+
when "jpg"
|
54
|
+
"JPG"
|
55
|
+
else
|
56
|
+
raise "BAD FORMAT: #{params[:format].inspect}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def action8
|
61
|
+
"test action8"
|
62
|
+
end
|
63
|
+
|
64
|
+
def action9
|
65
|
+
"test action9"
|
66
|
+
end
|
67
|
+
|
68
|
+
def action10
|
69
|
+
"test action10"
|
70
|
+
end
|
71
|
+
|
72
|
+
def action11
|
73
|
+
"test action11"
|
74
|
+
end
|
75
|
+
|
76
|
+
def empty_id?
|
77
|
+
params[:id].empty?
|
78
|
+
end
|
79
|
+
|
80
|
+
def non_empty_id?
|
81
|
+
!empty_id?
|
82
|
+
end
|
83
|
+
|
84
|
+
def index
|
85
|
+
"test index"
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,433 @@
|
|
1
|
+
Mon, 21 Jul 2008 23:29:20 GMT ~ info ~ Logfile created
|
2
|
+
~ Using memcache cache
|
3
|
+
~ Not Using Sessions
|
4
|
+
~ Using memory cache
|
5
|
+
~ Not Using Sessions
|
6
|
+
~ cache: expired all
|
7
|
+
~ {:after_filters_time=>2.0e-05, :before_filters_time=>4.0e-05, :action_time=>0.000221}
|
8
|
+
~ {:after_filters_time=>4.0e-05, :before_filters_time=>2.5e-05, :action_time=>0.000792}
|
9
|
+
~ cache: hit (key1)
|
10
|
+
~ {:after_filters_time=>2.2e-05, :before_filters_time=>2.5e-05, :action_time=>0.000636}
|
11
|
+
~ cache: hit (key11)
|
12
|
+
~ {:after_filters_time=>4.5e-05, :before_filters_time=>9.4e-05, :action_time=>0.001524}
|
13
|
+
~ cache: hit (key11)
|
14
|
+
~ cache: expired (key11)
|
15
|
+
~ cache: miss (key11)
|
16
|
+
~ {:after_filters_time=>3.8e-05, :before_filters_time=>8.8e-05, :action_time=>0.001444}
|
17
|
+
~ cache: expired (key1)
|
18
|
+
~ cache: miss (key1)
|
19
|
+
~ {:after_filters_time=>3.1e-05, :before_filters_time=>4.0e-05, :action_time=>0.00092}
|
20
|
+
~ cache: miss (unknown_key)
|
21
|
+
~ cache: set (test1)
|
22
|
+
~ cache: hit (test1)
|
23
|
+
~ cache: set (test2)
|
24
|
+
~ cache: hit (test2)
|
25
|
+
~ cache: set (test3)
|
26
|
+
~ cache: hit (test3)
|
27
|
+
~ cache: expired matching (test)
|
28
|
+
~ cache: miss (test1)
|
29
|
+
~ cache: miss (test2)
|
30
|
+
~ cache: miss (test3)
|
31
|
+
~ cache: set (timed_key)
|
32
|
+
~ cache: hit (timed_key)
|
33
|
+
~ cache: miss (timed_key)
|
34
|
+
~ cache: set (test1)
|
35
|
+
~ cache: expired (test1)
|
36
|
+
~ cache: miss (test1)
|
37
|
+
~ cache: set (test2/id1)
|
38
|
+
~ cache: expired (test2/id1)
|
39
|
+
~ cache: miss (test2/id1)
|
40
|
+
~ cache: set (test3)
|
41
|
+
~ cache: expired (test3)
|
42
|
+
~ cache: miss (test3)
|
43
|
+
~ cache: set (test4/id1)
|
44
|
+
~ cache: expired matching (test4/id1)
|
45
|
+
~ cache: miss (test4/id1/id2)
|
46
|
+
~ cache: expired all
|
47
|
+
~ cache: miss (key1)
|
48
|
+
~ cache: set (key1)
|
49
|
+
~ cache: hit (key1)
|
50
|
+
~ cache: miss (/cache_controller/action3)
|
51
|
+
~ cache: set (/cache_controller/action3)
|
52
|
+
~ {:after_filters_time=>7.9e-05, :before_filters_time=>0.000111, :action_time=>0.000218}
|
53
|
+
~ cache: hit (/cache_controller/action3)
|
54
|
+
~ cache: expired (/cache_controller/action3)
|
55
|
+
~ cache: miss (/cache_controller/action3)
|
56
|
+
~ cache: miss (/cache_controller/action3/abc/456/ghi)
|
57
|
+
~ cache: set (/cache_controller/action3/abc/456/ghi)
|
58
|
+
~ {:after_filters_time=>6.9e-05, :before_filters_time=>7.9e-05, :action_time=>0.000163}
|
59
|
+
~ cache: hit (/cache_controller/action3/abc/456/ghi)
|
60
|
+
~ cache: hit (/cache_controller/action3/abc/456/ghi)
|
61
|
+
~ {:after_filters_time=>3.4e-05, :action_time=>0.00011}
|
62
|
+
~ cache: expired (/cache_controller/action3/abc/456/ghi)
|
63
|
+
~ cache: miss (/cache_controller/action3/abc/456/ghi)
|
64
|
+
~ cache: miss (/cache_controller/action4)
|
65
|
+
~ cache: set (/cache_controller/action4)
|
66
|
+
~ {:after_filters_time=>7.6e-05, :before_filters_time=>7.9e-05, :action_time=>0.00017}
|
67
|
+
~ cache: hit (/cache_controller/action4)
|
68
|
+
~ cache: miss (/cache_controller/action4)
|
69
|
+
~ cache: expired matching (/cache_controller/action4)
|
70
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
71
|
+
~ cache: set (/cache_controller/action4/path/to/nowhere)
|
72
|
+
~ {:after_filters_time=>9.5e-05, :before_filters_time=>0.000108, :action_time=>0.000227}
|
73
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
74
|
+
~ cache: miss (/cache_controller/action4)
|
75
|
+
~ cache: set (/cache_controller/action4)
|
76
|
+
~ {:after_filters_time=>9.2e-05, :before_filters_time=>0.000112, :action_time=>0.000225}
|
77
|
+
~ cache: expired (/cache_controller/action4)
|
78
|
+
~ cache: miss (/cache_controller/action4)
|
79
|
+
~ cache: set (/cache_controller/action4)
|
80
|
+
~ {:after_filters_time=>8.1e-05, :before_filters_time=>8.8e-05, :action_time=>0.000184}
|
81
|
+
~ cache: expired matching (/cache_control)
|
82
|
+
~ cache: miss (/cache_controller/action4)
|
83
|
+
~ cache: set (/cache_controller/action4)
|
84
|
+
~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
|
85
|
+
~ cache: expired (/cache_controller/action4)
|
86
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
87
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
88
|
+
~ {:after_filters_time=>7.3e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
|
89
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
90
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
91
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
92
|
+
~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.8e-05, :action_time=>0.000164}
|
93
|
+
~ cache: expired matching (/cache_controller/action4)
|
94
|
+
~ cache: miss (/cache_controller/action4)
|
95
|
+
~ cache: set (/cache_controller/action4)
|
96
|
+
~ {:after_filters_time=>7.3e-05, :before_filters_time=>7.7e-05, :action_time=>0.000164}
|
97
|
+
~ cache: expired (/cache_controller/action4)
|
98
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
99
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
100
|
+
~ {:after_filters_time=>7.2e-05, :before_filters_time=>7.7e-05, :action_time=>0.000163}
|
101
|
+
~ cache: expired matching (/cache_controller/action4/id1)
|
102
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
103
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
104
|
+
~ {:after_filters_time=>7.3e-05, :before_filters_time=>9.1e-05, :action_time=>0.000178}
|
105
|
+
~ cache: expired matching (/cache_controller/action4)
|
106
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
107
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
108
|
+
~ {:after_filters_time=>7.1e-05, :before_filters_time=>7.7e-05, :action_time=>0.000164}
|
109
|
+
~ cache: expired matching (/cache_controller/action4/id1)
|
110
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
111
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
112
|
+
~ {:after_filters_time=>7.3e-05, :before_filters_time=>9.1e-05, :action_time=>0.000178}
|
113
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
114
|
+
~ cache: miss (/cache_controller/action4)
|
115
|
+
~ cache: set (/cache_controller/action4)
|
116
|
+
~ {:after_filters_time=>7.2e-05, :before_filters_time=>9.1e-05, :action_time=>0.000177}
|
117
|
+
~ cache: expired (/cache_controller/action4)
|
118
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
119
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
120
|
+
~ {:after_filters_time=>6.5e-05, :before_filters_time=>8.3e-05, :action_time=>0.000161}
|
121
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
122
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
123
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
124
|
+
~ {:after_filters_time=>6.5e-05, :before_filters_time=>8.2e-05, :action_time=>0.00016}
|
125
|
+
~ cache: expired matching (/cache_controller/action4/id1)
|
126
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
127
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
128
|
+
~ {:after_filters_time=>5.0e-05, :before_filters_time=>5.8e-05, :action_time=>0.000119}
|
129
|
+
~ cache: expired matching (/cache_controller/action4/id1)
|
130
|
+
~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000175, :action_time=>0.000213}
|
131
|
+
~ cache: miss (/cache_controller/action8/cache)
|
132
|
+
~ cache: set (/cache_controller/action8/cache)
|
133
|
+
~ {:after_filters_time=>5.5e-05, :before_filters_time=>0.000142, :action_time=>0.000208}
|
134
|
+
~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000104, :action_time=>0.000141}
|
135
|
+
~ cache: miss (/cache_controller/action9/cache)
|
136
|
+
~ cache: set (/cache_controller/action9/cache)
|
137
|
+
~ {:after_filters_time=>5.6e-05, :before_filters_time=>0.000129, :action_time=>0.000194}
|
138
|
+
~ {:after_filters_time=>2.4e-05, :before_filters_time=>0.000106, :action_time=>0.000139}
|
139
|
+
~ cache: miss (/cache_controller/action10/cache)
|
140
|
+
~ cache: set (/cache_controller/action10/cache)
|
141
|
+
~ {:after_filters_time=>5.2e-05, :before_filters_time=>0.000126, :action_time=>0.000187}
|
142
|
+
~ {:after_filters_time=>2.4e-05, :before_filters_time=>0.000103, :action_time=>0.000136}
|
143
|
+
~ cache: miss (/cache_controller/action11/cache)
|
144
|
+
~ cache: set (/cache_controller/action11/cache)
|
145
|
+
~ {:after_filters_time=>5.1e-05, :before_filters_time=>0.000134, :action_time=>0.000195}
|
146
|
+
~ cache: set (/cache_controller/action5)
|
147
|
+
~ {:after_filters_time=>0.000414, :before_filters_time=>0.000163, :action_time=>0.000596}
|
148
|
+
~ cache: set (/cache_controller/action5/this/is/a/test)
|
149
|
+
~ {:after_filters_time=>0.001305, :before_filters_time=>0.000296, :action_time=>0.001627}
|
150
|
+
~ cache: set (/cache_controller/action6)
|
151
|
+
~ {:after_filters_time=>0.000582, :before_filters_time=>0.000236, :action_time=>0.000858}
|
152
|
+
~ cache: hit (/cache_controller/action6)
|
153
|
+
~ {:after_filters_time=>2.4e-05, :action_time=>0.000346}
|
154
|
+
~ cache: set (/cache_controller/action6)
|
155
|
+
~ {:after_filters_time=>0.000622, :before_filters_time=>0.0008, :action_time=>0.001475}
|
156
|
+
~ cache: set (/cache_controller/action6/path/to/nowhere)
|
157
|
+
~ {:after_filters_time=>0.001422, :before_filters_time=>0.000258, :action_time=>0.001737}
|
158
|
+
~ cache: hit (/cache_controller/action6/path/to/nowhere)
|
159
|
+
~ {:after_filters_time=>3.8e-05, :action_time=>0.000656}
|
160
|
+
~ cache: set (/cache_controller/action6/path/to/nowhere)
|
161
|
+
~ {:after_filters_time=>0.000387, :before_filters_time=>0.000445, :action_time=>0.000869}
|
162
|
+
~ cache: set (/cache_controller/action6)
|
163
|
+
~ {:after_filters_time=>0.000341, :before_filters_time=>0.000178, :action_time=>0.000543}
|
164
|
+
~ cache: set (/cache_controller/action6)
|
165
|
+
~ {:after_filters_time=>0.000574, :before_filters_time=>0.000164, :action_time=>0.000771}
|
166
|
+
~ cache: set (/cache_controller/action6)
|
167
|
+
~ {:after_filters_time=>0.000375, :before_filters_time=>0.000167, :action_time=>0.000575}
|
168
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
169
|
+
~ {:after_filters_time=>0.00086, :before_filters_time=>0.000183, :action_time=>0.001069}
|
170
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
171
|
+
~ {:after_filters_time=>0.000349, :before_filters_time=>0.00016, :action_time=>0.000536}
|
172
|
+
~ cache: set (/cache_controller/action6)
|
173
|
+
~ {:after_filters_time=>0.000367, :before_filters_time=>0.000149, :action_time=>0.000543}
|
174
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
175
|
+
~ {:after_filters_time=>0.000718, :before_filters_time=>0.000163, :action_time=>0.000908}
|
176
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
177
|
+
~ {:after_filters_time=>0.000332, :before_filters_time=>0.000141, :action_time=>0.000502}
|
178
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
179
|
+
~ {:after_filters_time=>0.000696, :before_filters_time=>0.000155, :action_time=>0.000877}
|
180
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
181
|
+
~ {:after_filters_time=>0.000397, :before_filters_time=>0.000154, :action_time=>0.000578}
|
182
|
+
~ cache: set (/cache_controller/action6)
|
183
|
+
~ {:after_filters_time=>0.000371, :before_filters_time=>0.00018, :action_time=>0.000577}
|
184
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
185
|
+
~ {:after_filters_time=>0.000358, :before_filters_time=>0.000172, :action_time=>0.000555}
|
186
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
187
|
+
~ {:after_filters_time=>0.000353, :before_filters_time=>0.000156, :action_time=>0.000544}
|
188
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
189
|
+
~ {:after_filters_time=>0.000337, :before_filters_time=>0.000151, :action_time=>0.000515}
|
190
|
+
~ cache: set (/cache_controller/action7.css)
|
191
|
+
~ {:after_filters_time=>0.000535, :before_filters_time=>0.000459, :action_time=>0.001035}
|
192
|
+
~ cache: hit (/cache_controller/action7.css)
|
193
|
+
~ {:after_filters_time=>2.7e-05, :action_time=>0.000552}
|
194
|
+
~ cache: set (/cache_controller/action7.js)
|
195
|
+
~ {:after_filters_time=>0.000539, :before_filters_time=>0.000381, :action_time=>0.000956}
|
196
|
+
~ cache: hit (/cache_controller/action7.js)
|
197
|
+
~ {:after_filters_time=>2.2e-05, :action_time=>0.0003}
|
198
|
+
~ cache: set (/cache_controller/action7.xml)
|
199
|
+
~ {:after_filters_time=>0.000405, :before_filters_time=>0.000169, :action_time=>0.000599}
|
200
|
+
~ cache: hit (/cache_controller/action7.xml)
|
201
|
+
~ {:after_filters_time=>2.1e-05, :action_time=>0.000263}
|
202
|
+
~ cache: set (/cache_controller/action7.jpg)
|
203
|
+
~ {:after_filters_time=>0.000331, :before_filters_time=>0.000173, :action_time=>0.000528}
|
204
|
+
~ cache: hit (/cache_controller/action7.jpg)
|
205
|
+
~ {:after_filters_time=>1.9e-05, :action_time=>0.000259}
|
206
|
+
~ cache: set (/cache_controller/action7.html)
|
207
|
+
~ {:after_filters_time=>0.000308, :before_filters_time=>0.00017, :action_time=>0.0005}
|
208
|
+
~ cache: hit (/cache_controller/action7.html)
|
209
|
+
~ {:after_filters_time=>2.2e-05, :action_time=>0.000288}
|
210
|
+
~ Using memcache cache
|
211
|
+
~ Not Using Sessions
|
212
|
+
~ cache: expired all
|
213
|
+
~ {:after_filters_time=>1.9e-05, :before_filters_time=>4.1e-05, :action_time=>0.000244}
|
214
|
+
~ cache: miss (key1)
|
215
|
+
~ cache: set (key1)
|
216
|
+
~ {:after_filters_time=>2.8e-05, :before_filters_time=>2.4e-05, :action_time=>0.00422}
|
217
|
+
~ cache: miss (key11)
|
218
|
+
~ cache: set (key11)
|
219
|
+
~ {:after_filters_time=>2.4e-05, :before_filters_time=>3.4e-05, :action_time=>0.001341}
|
220
|
+
~ {:after_filters_time=>2.7e-05, :before_filters_time=>4.9e-05, :action_time=>0.001105}
|
221
|
+
~ cache: expired (key11)
|
222
|
+
~ cache: miss (key11)
|
223
|
+
~ {:after_filters_time=>3.9e-05, :before_filters_time=>9.3e-05, :action_time=>0.001921}
|
224
|
+
~ cache: expired (key1)
|
225
|
+
~ cache: miss (key1)
|
226
|
+
~ cache: miss (key1)
|
227
|
+
~ cache: set (key1)
|
228
|
+
~ {:after_filters_time=>3.1e-05, :before_filters_time=>4.2e-05, :action_time=>0.001765}
|
229
|
+
~ cache: miss (unknown_key)
|
230
|
+
~ cache: set (test1)
|
231
|
+
~ cache: set (test2)
|
232
|
+
~ cache: set (test3)
|
233
|
+
~ cache: expired (test1)
|
234
|
+
~ cache: expired (test2)
|
235
|
+
~ cache: expired (test3)
|
236
|
+
~ cache: miss (test1)
|
237
|
+
~ cache: miss (test2)
|
238
|
+
~ cache: miss (test3)
|
239
|
+
~ cache: set (timed_key)
|
240
|
+
~ cache: miss (timed_key)
|
241
|
+
~ cache: set (test1)
|
242
|
+
~ cache: expired (test1)
|
243
|
+
~ cache: miss (test1)
|
244
|
+
~ cache: set (test2/id1)
|
245
|
+
~ cache: expired (test2/id1)
|
246
|
+
~ cache: miss (test2/id1)
|
247
|
+
~ cache: set (test3)
|
248
|
+
~ cache: expired (test3)
|
249
|
+
~ cache: miss (test3)
|
250
|
+
~ cache: set (test4/id1)
|
251
|
+
~ cache: expired (test4/id1)
|
252
|
+
~ cache: miss (test4/id1/id2)
|
253
|
+
~ cache: expired all
|
254
|
+
~ cache: miss (key1)
|
255
|
+
~ cache: set (key1)
|
256
|
+
~ cache: miss (/cache_controller/action3)
|
257
|
+
~ cache: set (/cache_controller/action3)
|
258
|
+
~ {:after_filters_time=>0.000491, :before_filters_time=>0.000238, :action_time=>0.000753}
|
259
|
+
~ cache: expired (/cache_controller/action3)
|
260
|
+
~ cache: miss (/cache_controller/action3)
|
261
|
+
~ cache: miss (/cache_controller/action3/abc/456/ghi)
|
262
|
+
~ cache: set (/cache_controller/action3/abc/456/ghi)
|
263
|
+
~ {:after_filters_time=>0.000458, :before_filters_time=>0.000186, :action_time=>0.000689}
|
264
|
+
~ {:after_filters_time=>2.3e-05, :action_time=>0.000186}
|
265
|
+
~ cache: expired (/cache_controller/action3/abc/456/ghi)
|
266
|
+
~ cache: miss (/cache_controller/action3/abc/456/ghi)
|
267
|
+
~ cache: miss (/cache_controller/action4)
|
268
|
+
~ cache: set (/cache_controller/action4)
|
269
|
+
~ {:after_filters_time=>0.000462, :before_filters_time=>0.000182, :action_time=>0.000656}
|
270
|
+
~ cache: miss (/cache_controller/action4)
|
271
|
+
~ cache: miss (/cache_controller/action4)
|
272
|
+
~ cache: expired (/cache_controller/action4)
|
273
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
274
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
275
|
+
~ cache: set (/cache_controller/action4/path/to/nowhere)
|
276
|
+
~ {:after_filters_time=>0.000713, :before_filters_time=>0.000315, :action_time=>0.00105}
|
277
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
278
|
+
~ cache: miss (/cache_controller/action4/path/to/nowhere)
|
279
|
+
~ cache: miss (/cache_controller/action4)
|
280
|
+
~ cache: set (/cache_controller/action4)
|
281
|
+
~ {:after_filters_time=>0.002476, :before_filters_time=>0.000364, :action_time=>0.002862}
|
282
|
+
~ cache: expired (/cache_controller/action4)
|
283
|
+
~ cache: miss (/cache_controller/action4)
|
284
|
+
~ cache: miss (/cache_controller/action4)
|
285
|
+
~ cache: set (/cache_controller/action4)
|
286
|
+
~ {:after_filters_time=>0.000716, :before_filters_time=>0.000307, :action_time=>0.00104}
|
287
|
+
~ cache: expired (/cache_controller/action4/path/to/nowhere)
|
288
|
+
~ cache: expired (/cache_controller/action4)
|
289
|
+
~ cache: miss (/cache_controller/action4)
|
290
|
+
~ cache: miss (/cache_controller/action4)
|
291
|
+
~ cache: set (/cache_controller/action4)
|
292
|
+
~ {:after_filters_time=>0.000476, :before_filters_time=>0.000189, :action_time=>0.000675}
|
293
|
+
~ cache: expired (/cache_controller/action4)
|
294
|
+
~ cache: miss (/cache_controller/action4)
|
295
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
296
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
297
|
+
~ {:after_filters_time=>0.000473, :before_filters_time=>0.000189, :action_time=>0.000671}
|
298
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
299
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
300
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
301
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
302
|
+
~ {:after_filters_time=>0.000486, :before_filters_time=>0.000181, :action_time=>0.000678}
|
303
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
304
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
305
|
+
~ cache: miss (/cache_controller/action4)
|
306
|
+
~ cache: set (/cache_controller/action4)
|
307
|
+
~ {:after_filters_time=>0.000484, :before_filters_time=>0.00019, :action_time=>0.000683}
|
308
|
+
~ cache: expired (/cache_controller/action4)
|
309
|
+
~ cache: miss (/cache_controller/action4)
|
310
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
311
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
312
|
+
~ {:after_filters_time=>0.000487, :before_filters_time=>0.000182, :action_time=>0.000679}
|
313
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
314
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
315
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
316
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
317
|
+
~ {:after_filters_time=>0.000471, :before_filters_time=>0.000187, :action_time=>0.000668}
|
318
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
319
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
320
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
321
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
322
|
+
~ {:after_filters_time=>0.000475, :before_filters_time=>0.000195, :action_time=>0.00068}
|
323
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
324
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
325
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
326
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
327
|
+
~ {:after_filters_time=>0.000489, :before_filters_time=>0.000174, :action_time=>0.000671}
|
328
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
329
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
330
|
+
~ cache: miss (/cache_controller/action4)
|
331
|
+
~ cache: set (/cache_controller/action4)
|
332
|
+
~ {:after_filters_time=>0.000485, :before_filters_time=>0.000199, :action_time=>0.000694}
|
333
|
+
~ cache: expired (/cache_controller/action4)
|
334
|
+
~ cache: miss (/cache_controller/action4)
|
335
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
336
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
337
|
+
~ {:after_filters_time=>0.000474, :before_filters_time=>0.000189, :action_time=>0.000673}
|
338
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
339
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
340
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
341
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
342
|
+
~ {:after_filters_time=>0.000471, :before_filters_time=>0.000186, :action_time=>0.000667}
|
343
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
344
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
345
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
346
|
+
~ cache: set (/cache_controller/action4/id1/id2)
|
347
|
+
~ {:after_filters_time=>0.000486, :before_filters_time=>0.00019, :action_time=>0.000686}
|
348
|
+
~ cache: expired (/cache_controller/action4/id1/id2)
|
349
|
+
~ cache: miss (/cache_controller/action4/id1/id2)
|
350
|
+
~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000162, :action_time=>0.000202}
|
351
|
+
~ cache: miss (/cache_controller/action8)
|
352
|
+
~ cache: miss (/cache_controller/action8/cache)
|
353
|
+
~ cache: set (/cache_controller/action8/cache)
|
354
|
+
~ {:after_filters_time=>0.000484, :before_filters_time=>0.000266, :action_time=>0.000759}
|
355
|
+
~ {:after_filters_time=>2.6e-05, :before_filters_time=>0.000107, :action_time=>0.000143}
|
356
|
+
~ cache: miss (/cache_controller/action9)
|
357
|
+
~ cache: miss (/cache_controller/action9/cache)
|
358
|
+
~ cache: set (/cache_controller/action9/cache)
|
359
|
+
~ {:after_filters_time=>0.000502, :before_filters_time=>0.000276, :action_time=>0.000788}
|
360
|
+
~ {:after_filters_time=>2.5e-05, :before_filters_time=>0.000147, :action_time=>0.000182}
|
361
|
+
~ cache: miss (/cache_controller/action10)
|
362
|
+
~ cache: miss (/cache_controller/action10/cache)
|
363
|
+
~ cache: set (/cache_controller/action10/cache)
|
364
|
+
~ {:after_filters_time=>0.003832, :before_filters_time=>0.000274, :action_time=>0.004122}
|
365
|
+
~ {:after_filters_time=>3.2e-05, :before_filters_time=>0.000154, :action_time=>0.000203}
|
366
|
+
~ cache: miss (/cache_controller/action11)
|
367
|
+
~ cache: miss (/cache_controller/action11/cache)
|
368
|
+
~ cache: set (/cache_controller/action11/cache)
|
369
|
+
~ {:after_filters_time=>0.000503, :before_filters_time=>0.000397, :action_time=>0.000915}
|
370
|
+
~ cache: set (/cache_controller/action5)
|
371
|
+
~ {:after_filters_time=>0.000436, :before_filters_time=>0.000189, :action_time=>0.000647}
|
372
|
+
~ cache: set (/cache_controller/action5/this/is/a/test)
|
373
|
+
~ {:after_filters_time=>0.001277, :before_filters_time=>0.000256, :action_time=>0.001557}
|
374
|
+
~ cache: set (/cache_controller/action6)
|
375
|
+
~ {:after_filters_time=>0.000479, :before_filters_time=>0.000253, :action_time=>0.00077}
|
376
|
+
~ cache: hit (/cache_controller/action6)
|
377
|
+
~ {:after_filters_time=>3.8e-05, :action_time=>0.000645}
|
378
|
+
~ cache: set (/cache_controller/action6)
|
379
|
+
~ {:after_filters_time=>0.00062, :before_filters_time=>0.000919, :action_time=>0.001593}
|
380
|
+
~ cache: set (/cache_controller/action6/path/to/nowhere)
|
381
|
+
~ {:after_filters_time=>0.001441, :before_filters_time=>0.000285, :action_time=>0.001775}
|
382
|
+
~ cache: hit (/cache_controller/action6/path/to/nowhere)
|
383
|
+
~ {:after_filters_time=>3.8e-05, :action_time=>0.000643}
|
384
|
+
~ cache: set (/cache_controller/action6/path/to/nowhere)
|
385
|
+
~ {:after_filters_time=>0.000637, :before_filters_time=>0.000806, :action_time=>0.001497}
|
386
|
+
~ cache: set (/cache_controller/action6)
|
387
|
+
~ {:after_filters_time=>0.000548, :before_filters_time=>0.000235, :action_time=>0.000817}
|
388
|
+
~ cache: set (/cache_controller/action6)
|
389
|
+
~ {:after_filters_time=>0.00057, :before_filters_time=>0.000325, :action_time=>0.000951}
|
390
|
+
~ cache: set (/cache_controller/action6)
|
391
|
+
~ {:after_filters_time=>0.00043, :before_filters_time=>0.000217, :action_time=>0.000679}
|
392
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
393
|
+
~ {:after_filters_time=>0.001216, :before_filters_time=>0.000286, :action_time=>0.00153}
|
394
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
395
|
+
~ {:after_filters_time=>0.000472, :before_filters_time=>0.000228, :action_time=>0.000734}
|
396
|
+
~ cache: set (/cache_controller/action6)
|
397
|
+
~ {:after_filters_time=>0.000451, :before_filters_time=>0.000232, :action_time=>0.000713}
|
398
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
399
|
+
~ {:after_filters_time=>0.000982, :before_filters_time=>0.000246, :action_time=>0.001256}
|
400
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
401
|
+
~ {:after_filters_time=>0.000375, :before_filters_time=>0.000203, :action_time=>0.000604}
|
402
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
403
|
+
~ {:after_filters_time=>0.000868, :before_filters_time=>0.000203, :action_time=>0.001096}
|
404
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
405
|
+
~ {:after_filters_time=>0.000316, :before_filters_time=>0.000188, :action_time=>0.000527}
|
406
|
+
~ cache: set (/cache_controller/action6)
|
407
|
+
~ {:after_filters_time=>0.000301, :before_filters_time=>0.000264, :action_time=>0.000584}
|
408
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
409
|
+
~ {:after_filters_time=>0.000284, :before_filters_time=>0.000184, :action_time=>0.000487}
|
410
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
411
|
+
~ {:after_filters_time=>0.000294, :before_filters_time=>0.00013, :action_time=>0.000444}
|
412
|
+
~ cache: set (/cache_controller/action6/id1/id2)
|
413
|
+
~ {:after_filters_time=>0.000653, :before_filters_time=>0.000335, :action_time=>0.001034}
|
414
|
+
~ cache: set (/cache_controller/action7.css)
|
415
|
+
~ {:after_filters_time=>0.000679, :before_filters_time=>0.000226, :action_time=>0.000941}
|
416
|
+
~ cache: hit (/cache_controller/action7.css)
|
417
|
+
~ {:after_filters_time=>2.5e-05, :action_time=>0.000364}
|
418
|
+
~ cache: set (/cache_controller/action7.js)
|
419
|
+
~ {:after_filters_time=>0.000474, :before_filters_time=>0.000188, :action_time=>0.000696}
|
420
|
+
~ cache: hit (/cache_controller/action7.js)
|
421
|
+
~ {:after_filters_time=>2.0e-05, :action_time=>0.000274}
|
422
|
+
~ cache: set (/cache_controller/action7.xml)
|
423
|
+
~ {:after_filters_time=>0.000548, :before_filters_time=>0.000168, :action_time=>0.000902}
|
424
|
+
~ cache: hit (/cache_controller/action7.xml)
|
425
|
+
~ {:after_filters_time=>2.1e-05, :action_time=>0.000298}
|
426
|
+
~ cache: set (/cache_controller/action7.jpg)
|
427
|
+
~ {:after_filters_time=>0.000318, :before_filters_time=>0.000162, :action_time=>0.000504}
|
428
|
+
~ cache: hit (/cache_controller/action7.jpg)
|
429
|
+
~ {:after_filters_time=>1.9e-05, :action_time=>0.000241}
|
430
|
+
~ cache: set (/cache_controller/action7.html)
|
431
|
+
~ {:after_filters_time=>0.000294, :before_filters_time=>0.000153, :action_time=>0.000467}
|
432
|
+
~ cache: hit (/cache_controller/action7.html)
|
433
|
+
~ {:after_filters_time=>2.0e-05, :action_time=>0.000239}
|