38 lines
1.2 KiB
Ruby
38 lines
1.2 KiB
Ruby
|
|
```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)}%"
|
||
|
|
```
|