
# Önbelleğe Alma

storh, küçük önbellek arka uçlarıyla ve çalışma zamanı bağımlılığı olmadan gelir:

```php
use Storh\Cache;
use Storh\CacheValidation;

$docs = new Storh\DocStore($root, 'pages', cache: Cache::memory(maxEntries: 10000));
$docs = new Storh\DocStore($root, 'pages', cache: Cache::apcu('storh.pages'));
$docs = new Storh\DocStore(
    $root,
    'pages',
    cache: Cache::memory(maxEntries: 100000, maxBytes: 96 * 1024 * 1024),
    cache_validation: CacheValidation::TRUST
);
```

Önbellek katmanları:

- kodu çözülmüş DocStore kayıtları
- bulunmayan kayıtlar için olumsuz aramalar
- bölümlere ayrılmış günlük manifestleri
- seyrek bölüm dizinleri

Doğrulama kipleri:

- `CacheValidation::STAT`: varlığı, değiştirilme zamanını ve boyutu doğrular.
- `CacheValidation::HASH`: varlığı, değiştirilme zamanını, boyutu ve içerik karmasını doğrular.
- `CacheValidation::TRUST`: önbellek isabetlerinde dosya sistemi doğrulamasını atlar ve mevcut storh örneğinin veya paylaşılan bir önbellek arka ucunun açık storh yazmalarını yayımladığına güvenir.

`STAT` varsayılan hızlı doğrulama kipidir. Her önbellek isabetinin, değiştirilme zamanını koruyan aynı boyuttaki yazmalar dahil, dosya içeriğini de doğrulaması gerektiğinde `HASH` kullanın. `STAT`, hem değiştirilme zamanını hem de boyutu koruyan harici içerik değişikliklerini algılayamaz. `TRUST`, tek süreçli veya paylaşılan önbellekli iş yükleri için en hızlı kiptir; storh dışında değiştirilen dosyaları kasıtlı olarak algılamaz.

`Cache::memory()`, girdi sayısı ve bayt miktarıyla sınırlandırılır. `maxBytes` sağlanmazsa bütçeyi PHP öğesinin `memory_limit` değerinden hesaplar.

`Cache::apcu()` isteğe bağlıdır. APCu kullanılamıyorsa veya geçerli SAPI için devre dışı bırakılmışsa işlem yapmayan bir arka uç gibi davranır.

## Ne zaman eklenmeli?

`DocStore`, okuduğu veya yazdığı kayıtlar için yapılandırılan kipe göre doğrulanmış küçük örnek başına önbellekleri her zaman tutar. Bir arka uç eklemek, örnekten daha uzun yaşayan bir önbellek sağlar: `Cache::memory()`, store'ları yeniden açan uzun ömürlü süreçlere yardımcı olur; `Cache::apcu()` ise kodu çözülmüş kayıtları PHP-FPM istekleri arasında paylaşır. [karşılaştırmaları](https://storh.inline0.dev/tr/docs/benchmarks), bellek arka ucunun soğuk okumada yaklaşık 83 µs, sıcak ve STAT ile doğrulanmış isabette ise 6 µs olduğunu ölçer.
