```ruby title="disk_cache.rb" require 'kreuzberg' require 'fileutils' cache_dir = File.expand_path('~/.cache/kreuzberg') FileUtils.mkdir_p(cache_dir) config = Kreuzberg::ExtractionConfig.new( use_cache: true, cache_config: Kreuzberg::CacheConfig.new( cache_path: cache_dir, max_cache_size: 500 * 1024 * 1024, cache_ttl_seconds: 7 * 86400, enable_compression: true, ) ) kreuzberg = Kreuzberg::Client.new(config) puts "First extraction (will be cached)..." result1 = kreuzberg.extract_file('document.pdf') puts " - Content length: #{result1.content.length}" puts " - Cached: #{result1.metadata['was_cached']}" puts "\nSecond extraction (from cache)..." result2 = kreuzberg.extract_file('document.pdf') puts " - Content length: #{result2.content.length}" puts " - Cached: #{result2.metadata['was_cached']}" puts "\nResults are identical: #{result1.content == result2.content}" cache_stats = kreuzberg.get_cache_stats puts "\nCache Statistics:" puts " - Total entries: #{cache_stats['total_entries']}" puts " - Cache size: #{(cache_stats['cache_size_bytes'] / 1024.0 / 1024.0).round(1)} MB" puts " - Hit rate: #{(cache_stats['hit_rate'] * 100).round(1)}%" ```