---
title: "Kešovanie — Permissions for Laravel | Roundly"
description: "Katalóg oprávnení v cache, jeho invalidácia po potvrdení transakcie, úskalia hromadných zápisov a správanie v Octane a queue workeroch."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/kesovanie
language: sk
---

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

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

# Kešovanie

Balík drží katalóg oprávnení v cache — iba id a name — aby bola kontrola cez Gate lacná. Invaliduje sa automaticky pri každej zmene priradení a pri každom uložení či zmazaní roly alebo oprávnenia, hneď ako sa daný zápis potvrdí, takže ručne ho vyprázdňujete len zriedka. Ak je to potrebné:

```php
use RoundlyConsulting\Permissions\Facades\Permissions;

Permissions::cache()->forget();
```

Alebo z príkazového riadka:

```bash
php artisan permissions:cache-reset
```

## Zápisy v transakcii

Invalidácia sa riadi potvrdením transakcie, nie samotným zápisom. V transakcii — v seederi alebo v migrácii na Postgrese — sa zdieľaná cache vyprázdni až po potvrdení najvonkajšej transakcie, takže súbežný request si medzitým nemôže znovu uložiť starý katalóg. Dovtedy proces, ktorý zapisuje, číta katalóg priamo z databázy, takže vidí vlastné zmeny, a po rollbacku v cache nezostane nič.

## Katalóg cez fasádu

Permissions::permissions() a Permissions::exists() čítajú katalóg z cache; Permissions::cache() vráti malý handle na invalidáciu:

```php
use RoundlyConsulting\Permissions\Facades\Permissions;

Permissions::permissions();               // cached catalog — Collection<Permission> (id + name)
Permissions::exists('auth.users.view');   // bool — string or BackedEnum, from the cache
Permissions::cache()->forget();           // drop the shared cache entry and this process's memo
Permissions::cache()->flushMemo();        // drop only this process's memo
```

Ak potrebujete celý riadok vrátane popisu, použite Permissions::findPermission().

## Hromadné zápisy obchádzajú invalidáciu

Automatickú invalidáciu spúšťajú Eloquent model eventy, ktoré hromadné operácie nevyvolajú: Permission::query()->delete(), ::insert(), ::upsert(), DB::table('permissions')->… ani truncate(). Po takomto seedovaní či importe invalidujte cache výslovne. Ak forget() zavoláte v transakcii, vyprázdni cache hneď a znova po jej potvrdení. Permissions::syncFrom() zapisuje cez modely, takže vyprázdnenie nepotrebuje:

```php
use Illuminate\Support\Facades\DB;
use RoundlyConsulting\Permissions\Facades\Permissions;

DB::table('permissions')->insert([
    ['name' => 'reports.export', 'created_at' => now(), 'updated_at' => now()],
    ['name' => 'reports.schedule', 'created_at' => now(), 'updated_at' => now()],
]);

Permissions::cache()->forget(); // mass writes fire no model events
```

Krátke predvolené cache.ttl (300 sekúnd) ohraničuje, ako dlho môže pretrvať vynechaná invalidácia — alebo katalóg, ktorý request práve načítaval v okamihu potvrdenia transakcie. Dlhšie TTL použite, len ak všetky zápisy idú cez Eloquent.

## Octane a queue workery

Balík si nad zdieľaným cache úložiskom drží malé memo v rámci requestu a resetuje ho pri každom requeste, úlohe a ticku v Octane a na začiatku každého jobu vo fronte, takže dlho bežiaci worker nikdy nepoužije neaktuálne memo. Na ďalších hraniciach vlastného dlho bežiaceho workera zavolajte Permissions::cache()->flushMemo(). Aby sa invalidácia prejavila naprieč workermi, použite zdieľané úložisko — redis, database alebo memcached; úložisko array je lokálne pre každý worker a vyprázdnenie v inom workeri nevidí:

```bash
PERMISSIONS_CACHE_STORE=redis
PERMISSIONS_CACHE_TTL=300
```

Do cache sa zapisujú iba skalárne hodnoty — nikdy Eloquent modely — takže katalóg funguje aj tam, kde aplikácia obmedzuje, ktoré triedy smie cache deserializovať. Obsah v neočakávanom tvare sa namiesto chyby requestu znovu zostaví.

## 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/permissions-for-laravel.md)
