Infrastruktúra

CloudFront és a cache-találati arány: a CDN, amit rosszul állítasz be

A rossz cache key és a hibás TTL megöli a CDN értékét, és feleslegesen terheli az origint. Néhány beállítás, amivel a találati arány — és a számla — helyre kerül.

Röviden: A rossz cache key és a hibás TTL megöli a CDN értékét, és feleslegesen terheli az origint. Néhány beállítás, amivel a találati arány — és a számla — helyre kerül.

A tartalomelosztó hálózat (CDN) egyszerű ígérete, hogy a tartalmat a felhasználóhoz közel gyorsítótárazza, így csökken a késleltetés és az origin terhelése. A gyakorlatban sok CDN úgy fut, hogy alig gyorsítótáraz bármit — a kérések nagy része átmegy az originre —, és senki nem érti, miért lassú és drága, ha egyszer „be van kapcsolva a CDN”. A hiba szinte mindig a cache key és a TTL beállításában van.

Miért nem talál a cache?

A CDN akkor tud kiszolgálni a gyorsítótárból, ha felismeri, hogy egy kérés ugyanaz, mint egy korábbi. Ezt a cache key dönti el. Ha a cache key túl sok mindent tartalmaz — például minden fejlécet, minden sütit, minden query paramétert —, akkor gyakorlatilag minden kérés egyedinek számít, és sosem lesz találat. A CDN ilyenkor csak egy drága átjáró az originhez.

A cache key karcsúsítása

  1. Vedd ki a cache keyből azt, ami nem befolyásolja a választ (irreleváns sütik, tracking-paraméterek).
  2. Tartsd meg azt, ami tényleg más választ ad (nyelv, verzió, ami valóban variálja a tartalmat).
  3. A statikus tartalomnál a lehető legegyszerűbb cache key a cél — sokszor csak az útvonal.

A TTL: meddig érvényes a másolat?

A másik gyakori hiba a túl rövid vagy be sem állított TTL (élettartam). Ha a tartalom másodpercekig él a cache-ben, a CDN folyamatosan visszakérdez az originhez, és az előny elolvad. A statikus, ritkán változó tartalomnak hosszú TTL-t adj; a dinamikusnak rövidebbet vagy célzott érvénytelenítést.

TartalomtípusJavasolt TTLMegjegyzés
Verziózott statikus fájlNagyon hosszúA név változik verziónként
Ritkán változó oldalHosszúÉrvénytelenítés kiadáskor
Gyakran változó adatRövidVagy ne cache-eld
Személyre szabottNe cache-eldVagy edge-en számold

A verziózott fájlnév trükkje

A statikus eszközöknél (JS, CSS, kép) a legjobb minta a tartalom-hash a fájlnévben. Így a fájl gyakorlatilag örökre gyorsítótárazható, mert ha a tartalom változik, a neve is változik — új URL, új cache-bejegyzés. Nem kell érvénytelenítéssel bajlódni, és a találati arány közel száz százalék lehet.

Mérd a találati arányt

A CDN egészségének legjobb egyetlen mutatója a cache-találati arány. Ha ez alacsony, akkor a CDN nem végzi a dolgát: a felhasználók lassan kapják a tartalmat, és az origined feleslegesen terhelt. Ezt a mutatót érdemes folyamatosan figyelni, mert egy rossz kiadás vagy egy elrontott beállítás azonnal leviheti — és vele a teljesítményt meg a költséghatékonyságot is.

A cache key mérnöki finomítása

A CDN teljesítményének kulcsa a cache key gondos megtervezése. A cache key dönti el, mikor tekint a CDN két kérést azonosnak — és ha túl sok mindent tartalmaz (minden fejléc, minden süti, minden query paraméter), akkor gyakorlatilag minden kérés egyedi lesz, és sosem lesz találat. A cél a minimális cache key: csak az, ami tényleg befolyásolja a választ.

A leggyakoribb gyilkos a nyomkövető query paraméter: ha minden marketinglink más paraméterrel érkezik, és ezek a cache keybe kerülnek, akkor ugyanaz az oldal ezerféle egyedi bejegyzésként tárolódik. Ezeket ki kell szűrni a cache keyből — a tartalom szempontjából irrelevánsak.

A TTL és a verziózás összjátéka

A statikus eszközöknél (JS, CSS, kép) a legjobb minta a tartalom-hash a fájlnévben. Így a fájl gyakorlatilag örökre gyorsítótárazható, mert ha a tartalom változik, a neve is változik — új URL, új cache-bejegyzés. Nem kell érvénytelenítéssel bajlódni, és a találati arány közel száz százalék lehet.

  1. Verziózott, hash-elt fájlnevek a statikus eszközökhöz.
  2. Hosszú TTL a ritkán változó tartalomhoz.
  3. Rövid TTL vagy célzott érvénytelenítés a dinamikushoz.

Az origin védelme

A jól beállított CDN nemcsak gyorsít, hanem védi az origint is. Magas találati aránynál a kérések nagy része a peremen kiszolgálódik, és az origin csak a cache-miss forgalmat kapja. Ez teljesítménytartalékot és költségmegtakarítást is jelent (kevesebb origin-terhelés, kevesebb egress). Ha az origined váratlanul terhelt, gyakran a rossz cache-beállítás a magyarázat — nem a valós forgalomnövekedés.

Mit jelent ez neked?

A CDN csak akkor ér valamit, ha tényleg talál a gyorsítótárban. Karcsúsítsd a cache keyt — dobd ki a tracking-paramétereket és az irreleváns sütiket —, adj hosszú TTL-t a statikus tartalomnak, és használj tartalom-hasht a fájlnevekben. Figyeld a találati arányt mint egészségmutatót: ha alacsony, a CDN csak egy drága átjáró. A jól beállított cache egyszerre gyorsabb élményt és alacsonyabb origin-terhelést ad.