Cache-Control HTTP-headeri – perusteet ja käyttöCache-Control HTTP-headeri – perusteet ja käyttö

Cache-Control on yksi tärkeimmistä HTTP-headerista, jota käytetään määrittämään, miten ja kuinka kauan verkkosivujen sisältöä voidaan tallentaa välimuistiin selaimissa ja välityspalvelimissa. Oikein konfiguroituna se parantaa sivuston suorituskykyä, vähentää palvelimen kuormitusta ja parantaa käyttäjäkokemusta lataamalla resursseja nopeammin.

Cache-Controlin merkitys

HTTP-välimuisti vähentää tarpeettomia palvelinpyyntöjä ja nopeuttaa latausaikoja tallentamalla resursseja väliaikaisesti selaimen tai välityspalvelimen muistiin. Cache-Control-headeri antaa palvelimelle mahdollisuuden määritellä tarkasti, miten resurssit tallennetaan ja kuinka kauan ne pysyvät välimuistissa.

Cache-Control-direktiivit

Cache-Control-headerissa voi olla useita eri direktiivejä, joilla säädellään välimuistin toimintaa:

1. public ja private

  • public – Resurssi voidaan tallentaa sekä selaimen että välityspalvelimen välimuistiin.
    Cache-Control: public
  • private – Resurssi voidaan tallentaa vain selaimen välimuistiin, mutta ei välityspalvelimeen.
    Cache-Control: private

2. max-age

  • Määrittää ajan sekunneissa, jonka ajan resurssi voidaan säilyttää välimuistissa.
    Cache-Control: max-age=3600

    Tämä tarkoittaa, että resurssi pysyy välimuistissa yhden tunnin ajan ennen kuin uusi pyyntö tehdään palvelimelle.

3. no-cache ja no-store

  • no-cache – Selaimen tai välityspalvelimen täytyy aina tarkistaa palvelimelta, onko resurssi päivittynyt.
    Cache-Control: no-cache
  • no-store – Resurssia ei saa koskaan tallentaa välimuistiin, ja se ladataan aina uudelleen palvelimelta.
    Cache-Control: no-store

4. must-revalidate

  • Välimuistissa oleva resurssi täytyy tarkistaa palvelimelta ennen sen käyttämistä, jos se on vanhentunut.
    Cache-Control: must-revalidate

5. proxy-revalidate

  • Toimii samalla tavalla kuin must-revalidate, mutta koskee erityisesti välityspalvelimia.
    Cache-Control: proxy-revalidate

6. s-maxage

  • Määrittää maksimiajan vain välityspalvelimille, mutta ei vaikuta selaimen välimuistiin.
    Cache-Control: s-maxage=600

    Tämä voi olla hyödyllistä CDN-palveluissa, joissa välityspalvelimet hallitsevat välimuistia erikseen.

Cache-Control käytännössä

Esimerkki HTTP-vastauksesta, joka sallii selaimen tallentaa resurssin tunniksi:

HTTP/1.1 200 OK
Cache-Control: public, max-age=3600

Esimerkki dynaamisesta sisällöstä, joka ei saa tallentua välimuistiin:

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate

Esimerkki CDN:n kanssa käytettävästä välimuistimäärityksestä:

HTTP/1.1 200 OK
Cache-Control: public, max-age=3600, s-maxage=86400

Välimuistin hallinta ja tietoturva

Vaikka välimuistin käyttö nopeuttaa verkkosivujen lataamista, se voi aiheuttaa myös tietoturvariskejä, jos arkaluontoiset tiedot tallennetaan virheellisesti välimuistiin. Cache-Control: no-store on suositeltava esimerkiksi seuraavissa tapauksissa:

  • Sisäänkirjautumissivut ja käyttäjäkohtaiset tiedot
  • Maksutapahtumasivut
  • Muut yksityiset tai arkaluontoiset tiedot sisältävät sivut

Yhteenveto

Cache-Control on keskeinen osa HTTP-välimuistinhallintaa, ja sen oikea käyttö voi merkittävästi parantaa verkkosivuston suorituskykyä ja turvallisuutta. Valitsemalla sopivat direktiivit voidaan optimoida resurssien tallennusta ja varmistaa, että käyttäjät saavat aina ajan tasalla olevan sisällön.