ee51b51b60
All Caches * Add default options to initializer that will be sent to all read, write, fetch, exist?, increment, and decrement * Add support for the :expires_in option to fetch and write for all caches. Cache entries are stored with the create timestamp and a ttl so that expiration can be handled independently of the implementation. * Add support for a :namespace option. This can be used to set a global prefix for cache entries. * Deprecate expand_cache_key on ActiveSupport::Cache and move it to ActionController::Caching and ActionDispatch::Http::Cache since the logic in the method used some Rails specific environment variables and was only used by ActionPack classes. Not very DRY but there didn't seem to be a good shared spot and ActiveSupport really shouldn't be Rails specific. * Add support for :race_condition_ttl to fetch. This setting can prevent race conditions on fetch calls where several processes try to regenerate a recently expired entry at once. * Add support for :compress option to fetch and write which will compress any data over a configurable threshold. * Nil values can now be stored in the cache and are distinct from cache misses for fetch. * Easier API to create new implementations. Just need to implement the methods read_entry, write_entry, and delete_entry instead of overwriting existing methods. * Since all cache implementations support storing objects, update the docs to state that ActiveCache::Cache::Store implementations should store objects. Keys, however, must be strings since some implementations require that. * Increase test coverage. * Document methods which are provided as convenience but which may not be universally available. MemoryStore * MemoryStore can now safely be used as the cache for single server sites. * Make thread safe so that the default cache implementation used by Rails is thread safe. The overhead is minimal and it is still the fastest store available. * Provide :size initialization option indicating the maximum size of the cache in memory (defaults to 32Mb). * Add prune logic that removes the least recently used cache entries to keep the cache size from exceeding the max. * Deprecated SynchronizedMemoryStore since it isn't needed anymore. FileStore * Escape key values so they will work as file names on all file systems, be consistent, and case sensitive * Use a hash algorithm to segment the cache into sub directories so that a large cache doesn't exceed file system limits. * FileStore can be slow so implement the LocalCache strategy to cache reads for the duration of a request. * Add cleanup method to keep the disk from filling up with expired entries. * Fix increment and decrement to use file system locks so they are consistent between processes. MemCacheStore * Support all keys. Previously keys with spaces in them would fail * Deprecate CompressedMemCacheStore since it isn't needed anymore (use :compress => true) [#4452 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net> |
||
---|---|---|
.. | ||
autoloading_fixtures | ||
core_ext | ||
dependencies | ||
fixtures | ||
json | ||
xml_mini | ||
abstract_unit.rb | ||
autoload.rb | ||
benchmarkable_test.rb | ||
buffered_logger_test.rb | ||
caching_test.rb | ||
callback_inheritance_test.rb | ||
callbacks_test.rb | ||
clean_backtrace_test.rb | ||
clean_logger_test.rb | ||
concern_test.rb | ||
configurable_test.rb | ||
dependencies_test.rb | ||
deprecation_test.rb | ||
empty_bool.rb | ||
flush_cache_on_private_memoization_test.rb | ||
gzip_test.rb | ||
i18n_test.rb | ||
inflector_test_cases.rb | ||
inflector_test.rb | ||
isolation_test.rb | ||
load_paths_test.rb | ||
memoizable_test.rb | ||
message_encryptor_test.rb | ||
message_verifier_test.rb | ||
multibyte_chars_test.rb | ||
multibyte_conformance.rb | ||
multibyte_test_helpers.rb | ||
multibyte_unicode_database_test.rb | ||
multibyte_utils_test.rb | ||
notifications_test.rb | ||
option_merger_test.rb | ||
ordered_hash_test.rb | ||
ordered_options_test.rb | ||
rescuable_test.rb | ||
safe_buffer_test.rb | ||
secure_random_test.rb | ||
string_inquirer_test.rb | ||
test_test.rb | ||
time_zone_test.rb | ||
transliterate_test.rb | ||
ts_isolated.rb | ||
whiny_nil_test.rb |