---
title: "Cachovanie — Geolocation for Laravel | Roundly"
description: "Cachujte úspešné výsledky locate() a distance() v ľubovoľnom cache store a znížte náklady na API aj latenciu — chyby sa necachujú."
url: https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel/cachovanie
language: sk
---

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

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

# Cachovanie

Zapnite cache, aby boli opakované vyhľadávania lacné a šetrné k limitom:

```bash
GEOLOCATION_CACHE=true
GEOLOCATION_CACHE_STORE=redis      # null = the default cache store
GEOLOCATION_CACHE_TTL=86400        # seconds
GEOLOCATION_CACHE_PREFIX=geolocation
```

- Úspešné výsledky locate() a distance() sa cachujú na cache.ttl sekúnd; výsledky null sa necachujú nikdy.
- Položky batch() idú cez locate(), takže každá IP sa cachuje samostatne. Matice vzdialeností sa necachujú.
- Volania pripnuté cez using() / provider() alebo s prepismi withToken() / withTimeout() / withConfig() cache úplne obchádzajú.
- Zásah v cache sa vráti okamžite a neodošle žiadnu udalosť.
- Záložná poloha sa nikdy necachuje: odpovedala len preto, že skutoční poskytovatelia nie, takže ďalšie volanie sa ich opýta znova.

## Bezpečné s akýmkoľvek úložiskom

Výsledky sa ukladajú ako obyčajné polia a pri čítaní sa znovu zostavia, takže cache funguje aj vtedy, keď úložisko odmieta deserializovať triedy (cache.serializable\_classes v Laraveli nastavené na false). Záznam, ktorý balík nepozná — napríklad zapísaný staršou verziou —, sa berie ako neúspešný zásah, nikdy ako výnimka.

## Odstránenie a vyprázdnenie

Jeden záznam odstránite cez forget() — prijíma ten istý GeolocationQuery alebo DistanceQuery, ktorý ste vyhľadávali —, všetky naraz cez flushCache():

```php
use RoundlyConsulting\Geolocation\DataTransferObjects\DistanceQuery;
use RoundlyConsulting\Geolocation\DataTransferObjects\GeolocationQuery;
use RoundlyConsulting\Geolocation\Facades\Geolocation;

Geolocation::forget(GeolocationQuery::forIp('8.8.8.8'));   // true when an entry was removed
Geolocation::forget(DistanceQuery::between($from, $to));  // distances too

Geolocation::flushCache();                                 // every lookup and distance
```

flushCache() funguje s akýmkoľvek úložiskom a iných kľúčov sa nedotkne: kľúče v cache nesú číslo generácie ({prefix}:v{generation}:locate:{hash}) a vyprázdnenie ho posunie ďalej, takže staršie záznamy sa už nikdy neprečítajú a vypršia podľa vlastného TTL. Vyhľadávanie alebo vzdialenosť, ktoré počas vyprázdnenia práve prebiehajú, uložia výsledok pod starú generáciu, takže ani ten sa už neprečíta.

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