```python title="disk_cache.py"
from pathlib import Path
from kreuzberg import Kreuzberg, ExtractionConfig, CacheConfig

cache_dir = Path.home() / ".cache" / "kreuzberg"
cache_dir.mkdir(parents=True, exist_ok=True)

config = ExtractionConfig(
    use_cache=True,
    cache_config=CacheConfig(
        cache_path=str(cache_dir),
        max_cache_size=500 * 1024 * 1024,
        cache_ttl_seconds=7 * 86400,
        enable_compression=True,
    ),
)

kreuzberg = Kreuzberg(config)

print("First extraction (will be cached)...")
result1 = kreuzberg.extract_file("document.pdf")
print(f"  - Content length: {len(result1.content)}")
print(f"  - Cached: {result1.metadata.get('was_cached', False)}")

print("\nSecond extraction (from cache)...")
result2 = kreuzberg.extract_file("document.pdf")
print(f"  - Content length: {len(result2.content)}")
print(f"  - Cached: {result2.metadata.get('was_cached', False)}")

print(f"\nResults are identical: {result1.content == result2.content}")

cache_stats = kreuzberg.get_cache_stats()
print(f"\nCache Statistics:")
print(f"  - Total entries: {cache_stats.get('total_entries', 0)}")
print(f"  - Cache size: {cache_stats.get('cache_size_bytes', 0) / 1024 / 1024:.1f} MB")
print(f"  - Hit rate: {cache_stats.get('hit_rate', 0):.1%}")
```
