INTEGRITY Dokumentace

Cache podle stavového kódu

Zákazníci mohou nastavit dobu platnosti (TTL) mezipaměti podle stavu odpovědi z origin serveru. TTL mezipaměti udává, jak dlouho prostředek zůstává v síti Cloudflare, než je označen jako STALE nebo z cache vyřazen. Stavové kódy vrací origin server daného zdroje.

Nastavení TTL mezipaměti na základě stavu odpovědi má přednost před výchozí chování cache (standardní cachování) pro statické soubory a přebíjí pokyny k ukládání do mezipaměti odesílané origin webovým serverem. Chcete-li nestatický obsah ukládat do mezipaměti, nastavte Cache Level pro Cache Everything pomocí Cache Rule. Nastavení no-store Cache-Control nebo nízkým TTL (pomocí max-age/s-maxage) zvyšuje počet požadavků na webové servery originu a snižuje výkon.

Limity ukládání do mezipaměti

Maximální limit pro cachování je u tarifů Free, Pro a Business 512 MB na soubor, u tarifu Enterprise pak 5 GB na soubor. Pokud potřebujete tyto limity navýšit, obraťte se na svého Customer Success Managera.

Edge TTL

By default, Cloudflare caches certain HTTP response codes with the following Edge Cache TTL when a cache-control direktiva nebo expires hlavičky odpovědi nejsou přítomné.

Stavový kód HTTP Default TTL
200, 206, 301 120m
302, 303 20m
404, 410 3m

Všechny ostatní stavové kódy se ve výchozím nastavení do mezipaměti neukládají.

Nastavení TTL mezipaměti podle stavového kódu odpovědi v dashboardu Cloudflare

Chcete-li nastavit TTL mezipaměti podle stavu odpovědi, vytvořit Cache Rule pro Cache TTL podle stavového kódu.

Nastavení TTL mezipaměti podle stavového kódu odpovědi přes Cloudflare API

Požadavek
curl --request PUT \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "rules": [
    {
      "expression": "(http.host eq \"www.example.com\")",
      "description": "set cache TTL by response status",
      "action": "set_cache_settings",
      "action_parameters": {
        "cache": true,
        "edge_ttl": {
          "status_code_ttl": [
            {
              "status_code_range": {
                "to": 299
              },
              "value": 86400
            },
            {
              "status_code_range": {
                "from": 300,
                "to": 499
              },
              "value": 0  // no-cache
            },
            {
              "status_code_range": {
                "from": 500
              },
              "value": -1  // no-store
            }
          ],
          "mode": "respect_origin"
        }
      }
    }
  ]
}'

Syntaxe

Zadejte JSON objekt obsahující stavové kódy a jim odpovídající TTL. Každý pár klíč-hodnota v pravidlu cache TTL by status má následující syntaxi:

Nastavení TTL mezipaměti podle stavového kódu odpovědi pomocí Cloudflare Worker

cacheTtlByStatus možnost je verzí cacheTtl funkce, která přiřadí cache TTL podle stavového kódu odpovědi na požadavek (například { "200-299": 86400, 404: 1, "500-599": 0 }).

Zpracování TTL pro stavové kódy 304 a 200

  1. Pokud pro stavový kód není TTL výslovně nastaveno 304, automaticky ji nastavíme tak, aby odpovídala TTL stavového kódu 200 (pokud jej uživatel definoval pro 200).

  2. Pokud uživatel výslovně nastaví jiné TTL pro 304 než pro 200, dojde k následujícímu chování:

Pokud například uživatel nastaví TTL na jednu hodinu pro stav 200 a 0 sekund (uložit do mezipaměti a vždy znovu ověřit) pro stavový kód 304, prostředek se uloží do cache na 1 hodinu. Po vypršení platnosti provedeme revalidaci s origin serverem. Pokud origin server vrátí 304, každý další požadavek vyvolá revalidaci. Pokud origin server nadále vrací 304, tento cyklus bude pokračovat.

Toto chování je nežádoucí, pokud uživatel nemá konkrétní specifický případ použití. Uživatelé by proto měli zajistit, aby TTL pro 304 odpovídá TTL pro 200 pokud to záměrně nevyžadují.