Cachovanie
Zapnite cache, aby boli opakované vyhľadávania lacné a šetrné k limitom:
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():
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 distanceflushCache() 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.
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.