( _Franko_ | 2021. 05. 01., szo – 10:08 )

Szerkesztve: 2021. 05. 01., szo – 10:10

Na, kicsit körülnéztem, a forráskód fos, tele van üres helyekkel, szószátyár, fájlok tömkelegét tölti le ugyanarról a szerverről, ráadásul ilyen kilométeres, paraméterekkel teli URL, timestamp benne, hogy véletlenül se lehessen értelmes cache-t felépíteni rá (igen, ez egy URL):

https://www.eeszt.gov.hu/combo/?browserId=other&minifierType=&languageId=hu_HU&b=6210&t=1619833149000&/html/js/aui/datatype-date-math/datatype-date-math-min.js&/html/js/aui/calendar-base/calendar-base-min.js&/html/js/aui/calendarnavigator/calendarnavigator-min.js&/html/js/aui/calendar/calendar-min.js&/html/js/aui/aui-datatype-date-parse/aui-datatype-date-parse-min.js&/html/js/aui/aui-datepicker-delegate/aui-datepicker-delegate-min.js&/html/js/aui/widget-autohide/widget-autohide-min.js&/html/js/aui/button-core/button-core-min.js&/html/js/aui/button-plugin/button-plugin-min.js&/html/js/aui/widget-stdmod/widget-stdmod-min.js&/html/js/aui/widget-buttons/widget-buttons-min.js&/html/js/aui/widget-modality/widget-modality-min.js&/html/js/aui/widget-position/widget-position-min.js&/html/js/aui/widget-position-align/widget-position-align-min.js&/html/js/aui/widget-position-constrain/widget-position-constrain-min.js&/html/js/aui/widget-stack/widget-stack-min.js&/html/js/aui/button/button-min.js&/html/js/aui/button-group/button-group-min.js

Minden a szerver oldal állít elő, egy lapozás 1,5 MB adat letöltése, kicsomagolva 2,4 MB, 60 request.

--

Ha nekem lett volna feladatom: a frontend megy teljes egészében CDN-re. A regisztráltak TAJ-születési dátum kombinációja megy CDN-re, REST interfésszel, ami visszaad egy JWT tokent, ha létezik-e a kombináció, IP flood védelemmel, auto scale szolgáltatásként. A szabad helyek mennek real-time CDN-re, szimpla bitmap formájában, amit a frontend kliensek letöltenek akár másodpercenként és a UI mutatja, hogy milyen szabad időpontok vannak még aznap, illetve milyen gyorsan fogynak a helyek. A konkrét foglalás egy darab HTTP/2 és/vagy REST hívás valid JWT tokennel, a szerveren megy bele egy queue-ba, a queue-ból pedig a szerver terhelése alapján megfelelő számú worker kapkodja ki és rögzíti, frissíti be a CDN bitmap fájlokat. A frontend válaszként megkapja a queue aktuális mélységét és a req/min értékét, kijelzi a felhasználó felé, hogy mennyi foglalás jön be percenként, mennyi a queue mélysége és mennyi ideig kell várnia arra, hogy a foglalása rögzítésre kerüljön. Ha közben valaki más hamarabb foglalta az időpontot, akkor a kliens ezt észreveszi (lásd CDN bitmap), és szól a felhasználónak, hogy válasszon másik időpontot. És kalap-kabát, támadhatják minden irányból.