[[:oktatas:web:back-end_framework:express|< Express]]
====== Express - Cache ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Ha az alkalmazásod gyorsan változó adatokat jelenít meg, szükség lehet a kliensoldali tárolás
kikapcsolására. Ilyenek lehetnek a csevegőüzenetek, tőzsdei árfolyamok, élő sportesemények stb.
Biztonsági megfontolások miatt is kikapcsolhatók. Például gyorsan változó jogosultságok, munkamenetek egy banki rendszerben.
A fejlesztési időben is szükség lehet a változások azonnali láthatóvá válására.
Ilyen lehet a dinamikusan generált tartalom.
A cache teljes kikapcsolása azonban rontja az alkalmazás teljesítményét, és növeli a szerver terhelését.
===== Kliensoldali cache kikapcsolása =====
Telepítsük a nocache csomagot:
npm install nocache
===== Használat =====
A nocache csomagot köztes szoftverként fogjuk használni:
import nocache from 'nocache';
// ...
app.use(nocache());
===== Útvonalra alkalmazás =====
Adott útvonalra használat:
router.get('/employees', [verifyToken, nocache()], EmployeeController.store);
Ha a verifyToken sikeresen lefut, akkor alkalmazzuk a nocache()-t.
A nocache() beállítja a következő fejléceket:
* Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
* Pragma: no-cache
* Expires: 0
===== Saját köztes függvény =====
Ez megoldható saját middleware függvénnyel is:
function nocache(req, res, next) {
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
res.header('Expires', '-1');
res.header('Pragma', 'no-cache');
next();
}
app.get('/employees', nocache, EmployeeController.store);