Cache a eager loading
Skompilované definície sa cachujú podľa dvojice (kalendár, revízia). Každý zápis zvýši revíziu vo svojej transakcii, takže nie je čo invalidovať — staré kľúče jednoducho vypršia podľa cache.ttl. Cache ukladá obyčajné polia, nepoužíva tagy a funguje s akýmkoľvek store.
Zoznamy bez N+1
Clinic::query()->withOpeningHours()->paginate(); // headers only (cache on)
Clinic::query()->withOpeningHours(definitions: true)->paginate(); // full definitions (cache off)Pri zapnutej cache stačia hlavičky — revízia je uložená v hlavičke. Aplikácie bez cache načítajú celé definície cez definitions: true.
Aktuálnosť
Priame úpravy rozvrhov, výnimiek a rozsahov cez Eloquent zvýšia revíziu automaticky. Po úpravách cez raw SQL, alebo keď sa zmení to, čo vracia openingHoursTimezone(), zavolajte refresh():
use RoundlyConsulting\OpeningHours\Facades\OpeningHours;
OpeningHours::refresh($clinic); // after raw SQL or a changed openingHoursTimezone()
OpeningHours::refresh($clinic, 'pickup'); // a named calendar
OpeningHours::flushMemo(); // clear the per-request memoManager za fasádou je registrovaný ako scoped, takže jeho memo skompilovaných definícií žije jeden request alebo job — bezpečne pod Octane aj vo frontách. Hook časového pásma vlastníka a dynamickí poskytovatelia sa vyhodnocujú pri každom volaní a necachujú sa. Poškodený záznam v cache sa považuje za miss a definícia sa skompiluje znova.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.