
# التخزين المؤقت

يتضمن storh واجهات تخزين مؤقت صغيرة ولا يعتمد على أي تبعية وقت التشغيل:

```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
);
```

طبقات التخزين المؤقت:

- سجلات DocStore التي فُك ترميزها
- عمليات البحث السلبية عن السجلات المفقودة
- بيانات SegmentedLog
- فهارس المقاطع المتناثرة

أوضاع التحقق:

- `CacheValidation::STAT`: التحقق من الوجود ووقت التعديل والحجم.
- `CacheValidation::HASH`: التحقق من الوجود ووقت التعديل والحجم وتجزئة المحتوى.
- `CacheValidation::TRUST`: تخطي التحقق من نظام الملفات عند العثور على نتيجة مخزنة مؤقتاً، والثقة بأن مثيل storh الحالي أو واجهة التخزين المؤقت المشتركة تنشر عمليات كتابة storh الصريحة.

`STAT` هو وضع التحقق السريع الافتراضي. استخدم `HASH` عندما يجب أن يتحقق كل وصول إلى الذاكرة المؤقتة أيضاً من محتوى الملف، بما في ذلك الكتابات بالحجم نفسه التي تحافظ على وقت التعديل. لا يمكن لـ`STAT` اكتشاف تغيير محتوى خارج النظام يحافظ على وقت التعديل والحجم معاً. أما `TRUST` فهو الوضع الأسرع لأعباء العمل ذات العملية الواحدة أو الذاكرة المؤقتة المشتركة؛ ولا يكتشف عمداً الملفات التي تتغير خارج storh.

يُحد `Cache::memory()` بعدد الإدخالات والبايتات. وعند عدم توفير `maxBytes`، تُشتق الميزانية من PHP الخاص بـ`memory_limit`.

`Cache::apcu()` اختياري. إذا لم يكن APCu متاحاً أو معطلاً لـSAPI الحالي، فإنه يعمل كواجهة تخزين مؤقت لا تنفذ أي إجراء.

## متى تضيف واجهة تخزين مؤقت

يحتفظ `DocStore` دائماً بذاكرات مؤقتة صغيرة لكل مثيل للسجلات التي سبق أن قرأها أو كتبها، مع التحقق وفق الوضع المُعد. وتضيف الواجهة المرفقة ذاكرة مؤقتة تبقى بعد انتهاء المثيل: يساعد `Cache::memory()` العمليات طويلة الأمد التي تعيد فتح المخازن، بينما يشارك `Cache::apcu()` السجلات المفكوكة بين طلبات PHP-FPM. وتقيس [اختبارات الأداء](https://storh.inline0.dev/ar/docs/benchmarks) الواجهة الذاكرية بنحو 83 µs للقراءة الباردة مقابل 6 µs للقراءة الدافئة المتحقق منها عبر STAT.
