---
title: "Kešovanie — Options for Laravel | Roundly"
description: "Pamäť v rámci requestu a trvalá cache — čo držia, ako ich zápisy udržiavajú aktuálne a ako vyprázdnenie funguje na každom úložisku."
url: https://roundly-consulting.com/sk/open-source/navody/options-for-laravel/kesovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Options for Laravel](https://roundly-consulting.com/sk/open-source/navody/options-for-laravel.md)

# Kešovanie

Pred databázou sú dve vrstvy:

- Pamäť v rámci requestu — vždy zapnutá. Žije počas jedného requestu alebo jedného jobu vo fronte: v kontajneri je naviazaná ako scoped a zahodí sa aj pri štarte jobu či pri prijatí requestu v Octane, takže dlhobežiaci worker nikdy neposiela hodnotu, ktorú medzitým zmenil iný proces.
- Trvalá cache — options.cache.enabled, predvolene zapnutá — v ľubovoľnom cache úložisku Illuminate. Zápisy aj mazania ju po commite aktualizujú, takže každý proces uvidí zmenu od svojho ďalšieho requestu či jobu.

Čítanie skontroluje pamäť requestu, potom trvalé úložisko a nakoniec databázu (s návratom na default()). set() zapíše novú surovú hodnotu do oboch vrstiev, forget() namiesto nej zapíše výslovný záznam „nič nie je uložené“ a import zapíše každú importovanú surovú hodnotu — nič iné invalidovať netreba.

## Surové hodnoty, nikdy casty

Obe vrstvy držia surový uložený reťazec, nikdy hodnotu po caste: šifrované nastavenie zostane v cache šifrovým textom a serializujú sa len skalárne hodnoty, takže ochrana unserialize v Laraveli (cache.serializable\_classes) z Collection či Carbon v cache neurobí \_\_PHP\_Incomplete\_Class. Každé čítanie surovú hodnotu pretypuje.

```bash
OPTIONS_CACHE_ENABLED=true
OPTIONS_CACHE_STORE=redis   # null = the app’s default store
OPTIONS_CACHE_TTL=600       # seconds; null caches forever
OPTIONS_CACHE_PREFIX=options
OPTIONS_CACHE_TAG=options
```

## Transakcie a súbežné čítania

Pamäť requestu prevezme novú hodnotu hneď, takže request, ktorý zapisuje, číta svoj vlastný zápis — aj v transakcii, rovnako ako jeho databázové spojenie. Záznam v trvalej cache sa hneď zahodí a znova sa naplní až po commite zápisu: mimo transakcie okamžite, v transakcii po commite tej najvonkajšej, po rollbacku nikdy. Žiadny iný proces tak nedostane hodnotu, ktorú databáza nikdy nepotvrdila.

Čítanie, ktoré v cache nič nenájde, naplní trvalý záznam cez add() — len ak v cache ešte nič nie je. Zápis, forget alebo import, ktorý medzi takým čítaním a naplnením prebehol, už uložil novší záznam, ktorý staršie čítanie neprepíše, takže TTL nikdy nezakonzervuje zastaranú hodnotu.

## Vyprázdnenie

```php
Options::flushCache(); // clears the in-request memo and the persistent entries
```

```bash
php artisan options:clear-cache
```

flushCache() aj options:clear-cache fungujú na každom úložisku. Každý kľúč v cache obsahuje token generácie a vyprázdnenie prejde na novú, takže starý záznam sa už neprečíta — ani v iných procesoch, od ich ďalšieho requestu či jobu. Úložisko s tagmi (Redis, Memcached) staré záznamy navyše hneď zmaže; na ostatných (file, database) vypršia podľa cache.ttl a pri TTL null zostanú, kým ich úložisko samo neodstráni.

## Kľúče v cache

Trvalé kľúče majú tvar {prefix}:{generation}:options:{key}:{scope}, kde scope je global alebo md5 z morph triedy vlastníka s predponou jej dĺžky a z kľúča vlastníka — dvaja vlastníci tak nikdy nezdieľajú kľúč. Samotná generácia je uložená pod {prefix}:generation.

Ak kľúč generácie chýba — úložisko ho vyhodilo alebo prebehol cache:clear —, vytvorí sa cez add() nový náhodný token a znova sa prečíta, takže requesty, ktoré ho v tej istej chvíli nenájdu, prijmú jednu generáciu; stará generácia sa nikdy znova nepoužije. Zápisy idú pod generáciu, ktorú úložisko práve drží, a ak sa iný proces od začiatku requestu posunul ďalej, aj pod generáciu zapamätanú v requeste.

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/options-for-laravel.md)
