Skip to content
  • Jonathan Hefner's avatar
    3efb8448
    Support replacing cache compressor · 3efb8448
    Jonathan Hefner authored
    This commit adds support for replacing the compressor used for
    serialized cache entries.  Custom compressors must respond to `deflate`
    and `inflate`.  For example:
    
      ```ruby
      module MyCompressor
        def self.deflate(string)
          # compression logic...
        end
    
        def self.inflate(compressed)
          # decompression logic...
        end
      end
    
      config.cache_store = :redis_cache_store, { compressor: MyCompressor }
      ```
    
    As part of this work, cache stores now also support a `:serializer`
    option.  Similar to the `:coder` option, serializers must respond to
    `dump` and `load`. However, serializers are only responsible for
    serializing a cached value, whereas coders are responsible for
    serializing the entire `ActiveSupport::Cache::Entry` instance.
    Additionally, the output from serializers can be automatically
    compressed, whereas coders are responsible for their own compression.
    
    Specifying a serializer instead of a coder also enables performance
    optimizations, including the bare string optimization introduced by cache
    format version 7.1.
    3efb8448
    Support replacing cache compressor
    Jonathan Hefner authored
    This commit adds support for replacing the compressor used for
    serialized cache entries.  Custom compressors must respond to `deflate`
    and `inflate`.  For example:
    
      ```ruby
      module MyCompressor
        def self.deflate(string)
          # compression logic...
        end
    
        def self.inflate(compressed)
          # decompression logic...
        end
      end
    
      config.cache_store = :redis_cache_store, { compressor: MyCompressor }
      ```
    
    As part of this work, cache stores now also support a `:serializer`
    option.  Similar to the `:coder` option, serializers must respond to
    `dump` and `load`. However, serializers are only responsible for
    serializing a cached value, whereas coders are responsible for
    serializing the entire `ActiveSupport::Cache::Entry` instance.
    Additionally, the output from serializers can be automatically
    compressed, whereas coders are responsible for their own compression.
    
    Specifying a serializer instead of a coder also enables performance
    optimizations, including the bare string optimization introduced by cache
    format version 7.1.
Loading