A Laravel Pennant áruházak és visszanyerik a Feature zászló értékeit egy rugalmas tárolórendszer segítségével, amely két fő illesztőprogramot támogat: egy memórián belüli tömb illesztőprogramot és egy tartós adatbázis-illesztőprogramot.
Tárolási mechanizmusok:
- tömb illesztőprogram: Ez az illesztőprogram-tárolások feloldották a jelzési jeleket egy memóriában. Gyors, de átmeneti, vagyis a tárolt szolgáltatás zászló értékei csak az aktuális kérés életciklusában léteznek, és utána elvesznek. Ez hasznos olyan egyszerű vagy ideiglenes felhasználási esetekben, amikor a perzisztencia nem szükséges.
- Adatbázis -illesztőprogram (alapértelmezett): A zászló továbbra is fennmaradhat a jelzési értékeket egy relációs adatbázisban, különös tekintettel a Pennant migrációjának futtatásával létrehozott „szolgáltatások” táblázatban. Ez az illesztőprogram tartósan tárolja a Megoldott szolgáltatásjelző értékeket, lehetővé téve az értékek megosztását több kérés és szerver között. Ideális több szerver vagy szerver nélküli környezetben futó alkalmazásokhoz. Az adatbázis-illesztőprogram egy memória-gyorsítótárat is használ egy kérés során, hogy elkerülje az ismételt adatbázis-lekérdezéseket ugyanazon szolgáltatásjelző számára, javítva a teljesítményt [1] [2] [5].
Hogyan definiálják és megoldják a jellemző zászlókat:
- A jellemző zászlókat olyan logikát tartalmazó bezárásokkal határozzák meg, hogy meghatározzák, hogy egy szolgáltatás aktív -e vagy sem. Ezek a bezárások elfogadhatják a paramétereket, például a hitelesített felhasználót, lehetővé téve a Scoped szolgáltatás zászlókat (például egy szolgáltatást csak az adminisztrátor felhasználói számára).
- Ha egy szolgáltatás zászlóját először egy adott hatókör (például a felhasználó) ellenőrzi, a Pennant végrehajtja a bezárást a szolgáltatás értékének megoldásához. Ezt a feloldott értéket ezután a konfigurált tároló illesztőprogramban (tömb vagy adatbázis) tárolja.
- Ugyanazon tulajdonság és hatókör későbbi ellenőrzéseinél a Pennant a tárolt értéket a tárolóhely -illesztőprogramból szerezze be, ahelyett, hogy újra kiszámítaná, ami optimalizálja a teljesítményt [2] [3].
A Feature zászló értékeinek lekérdezése:
-Az egyetlen szolgáltatásjelző értékét letöltheti olyan módszerekkel, mint a „Feature :: Active ('Feature-Name”) `` `annak ellenőrzéséhez, hogy engedélyezve van-e (logikai) vagy a„ Feature :: érték (' Feature-Name ') `értékének megszerzéséhez, amely logikai vagy bármilyen más adattípus (gazdag Value-jelzők) lehet.
.
- A szolgáltatásosztályok dinamikusan felfedezhetők és regisztrálhatók annak biztosítása érdekében, hogy az összes jellemző zászló lekérdezése [1] [2].
Összegzés:
A Laravel Pennant feloldja a Feature zászlási értékeket a felhasználó által definiált logikai bezárások futtatásával, majd ezeket a megoldott értékeket ideiglenesen egy memóriában lévő tömbön vagy kitartóan egy adatbázis-táblázatban tárolja. Ez a tárolási mechanizmus lehetővé teszi a zászló számára, hogy hatékonyan lekérje a Feature zászlási állapotokat a későbbi kérelmeknél anélkül, hogy újból kiszámítaná, támogatva mind az egyszerű, mind az összetett felhasználási eseteket, beleértve a felhasználónkénti körű zászlókat is. Az alapértelmezett és az ajánlott megközelítés az adatbázis-illesztőprogram használata tartós tároláshoz, különösen a multi-server vagy a termelési környezetben, míg a tömb illesztőprogram megfelel az átmeneti vagy tesztelési forgatókönyveknek [1] [2] [5].
Idézetek:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-feature-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-aleny-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5