İçeriğe geç

Ö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ı, 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.