NGINX a nastavení cache u PHP generovaných obrázků a statických souborů

Správné nastavení cache u statického obsahu může znatelně zlepšit rychlost načítání stránek

Pro statický obsah, který se po dobu své existence nemění (obrázky, css soubory s vygenerovaným unikátním jménem atd.) je výhodné posílat v hlavičce i informaci o jeho expiraci. Pokud se jedná o obsah, který má být teprve vygenerován prvním přístupem, je potřeba pro tento první request zajistit přesměrování na správný soubor. Tím bývá front controller celé aplikace, což bývá index.php. Tato situace nastává často u generování náhledových obrázků, např. pomocí LiipImagineBundle

Vlastní zápis v konfiguraci NGINX je jednoduchý a může vypadat např takto:

location ~* \.(jpg|jpeg|png|webp|gif|ico|css|js|woff2)$ {
    expires 365d;
    try_files $uri /index.php$is_args$args;
}


Pro srozumitelnost uvedu i význam jednotlivých částí zápisu a použitých proměnných:

  • location ~* - direktiva platná pro request odpovídající uvedenému regulárnímu výrazu. V tomto konkrétním případě nastavujeme cache pro obrázky, css, js a fonty.
  • expires 365d - expiraci nastavujeme na 365 dní
  • $uri - normalizované URI z requestu
  • $is_args - ? (otazník) pokud request obsahuje GET parametry, jinak prázdný řetězec
  • $args - vlastní GET parametry

Odkaz do NGINX dokumentace na všechny dostupné proměnné je zde

Mohlo by vás také zajímat

NGINX a priorita zpracování location direktiv

V konfiguraci domény v NGINX můžete mít více location direktiv, které se svým nastavením překrývají. Zde je popis v jakém pořadí budou vyhodnoceny

Číst více

nám. Republiky 28
301 00 Plzeň
Česká republika
IČ: 28006402
DIČ: CZ28006402

© 2002 - 2020 iD-SIGN BRANDS MENTIONED ABOVE ARE PROPERTY OF THEIR RESPECTIVE OWNER.