# Cache Control képességei

> A Cache Control kiegészítő 8 képessége: gyorsítótár-állapot olvasása, törlési szabályok, Cloudflare-hitelesítő adatok ellenőrzése és egy webhely gyorsítótárának törlése.

A MainWP Cache Control 5.3-as kiadása nyolc képességet regisztrál a `mainwp-cache-control` kategóriában. Mindegyik a vezérlőpult `mainwp/` névterében érhető el. Segítségükkel olvashatod a gyorsítótár állapotát, beállíthatod a globális és a webhelyenkénti törlési szabályokat, ellenőrizheted a tárolt Cloudflare-hitelesítő adatokat, és törölheted egy webhely gyorsítótárát.

## Követelmények

- WordPress 6.9 vagy újabb a MainWP vezérlőpulton
- Abilities API-támogatású vezérlőpult; az alábbi `input_json` példákhoz 6.2 vagy újabb
- Cache Control 5.3 vagy újabb, aktívan a vezérlőpulton
- Hitelesített WordPress-felhasználó `manage_options` joggal, a Cache Control és a célwebhelyek elérésével
- Minden törlendő webhelyen beállított gyorsítótár-bővítmény vagy Cloudflare-integráció

Használj alkalmazásjelszót vagy az Abilities API áttekintésében leírt hitelesítést. A Team Control jogosultságok is érvényesek:

- az állapot és a törlési eredmény olvasásához a kiszolgálóadatok megtekintésének joga kell,
- a globális beállításokhoz és a hitelesítő adatok ellenőrzéséhez a vezérlőpult-beállítások kezelésének joga,
- a webhelyszabályok módosításához és a törléshez a webhelyek szerkesztésének joga.

A webhelyhez kötött hívások a webhely elérését is ellenőrzik, az állapotlista pedig kihagyja azokat a webhelyeket, amelyekhez a felhasználónak nincs hozzáférése.

## Elérhető képességek

| Képesség | Metódus | Mire jó |
|---|---|---|
| `mainwp/get-site-cache-control-status-v1` | GET | Egy webhely vezérlőpult-beállításai és a gyorsítótárazott Child-megfigyelések |
| `mainwp/list-site-cache-control-statuses-v1` | GET | Webhelyállapotok kurzoros lapozással |
| `mainwp/get-global-cache-control-configuration-v1` | GET | Globális beállítások és a hitelesítő adatok tárolási állapota |
| `mainwp/set-global-cache-control-policy-v1` | POST | A globális automatikus törlés és a Cloudflare engedélyezése |
| `mainwp/set-site-cache-control-policy-v1` | POST | Egy webhely automatikus törlési és Cloudflare-módja |
| `mainwp/validate-cloudflare-credentials-v1` | GET | Egy webhelyhez kiválasztott, tárolt Cloudflare-hitelesítő adatok ellenőrzése |
| `mainwp/purge-site-cache-v1` | POST | Gyorsítótár-törlés kérése egy webhelyen |
| `mainwp/get-site-cache-purge-outcome-v1` | GET | Az utolsó tárolt, szerkezetes törlési eredmény |

A képességek és sémáik felderítése:

```bash
curl -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities?category=mainwp-cache-control'
```

A webhelyhez kötött hívásokhoz kötelező a `site_id`: pozitív egész szám (például `1`) vagy annak tízes számrendszerbeli szöveges alakja (például `"1"`). Tartomány, URL, nulla és vezető nullás szöveg nem fogadható el. A képességek elutasítják a felesleges bemeneti mezőket.

## Egy webhely gyorsítótár-állapota

Képesség: `mainwp/get-site-cache-control-status-v1`, GET.

```bash
curl -G -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  --data-urlencode 'input_json={"site_id":1}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-site-cache-control-status-v1/run'
```

Példaválasz:

```json
{
  "site_id": 1,
  "live": false,
  "current_configuration": {
    "source": "dashboard_current_configuration",
    "auto_purge_mode": 2,
    "configured_auto_purge_enabled": true,
    "cloudflare_mode": 0,
    "configured_cloudflare_enabled": false,
    "child_application_status": "unknown"
  },
  "cached_child_observation": {
    "source": "dashboard_cached_child_observation",
    "cache_solution": "WP Rocket",
    "last_reported_purge_at": 1790150400
  }
}
```

A `current_configuration` a vezérlőpulton tárolt beállításokat mutatja, a globális öröklést is beleértve. A két `configured_*_enabled` értéket a szabálymódok határozzák meg. A `cached_child_observation` a MainWP Child által legutóbb jelentett gyorsítótár-megoldást és törlési időbélyeget tartalmazza. A `cache_solution` üres szöveg, ha nem elérhető, a `last_reported_purge_at` pedig Unix-időbélyeg, vagy `0`, ha nem elérhető.

Ez az olvasás nem keresi meg a MainWP Childot vagy a Cloudflare-et, nem indít törlést, és nem frissíti a megfigyeléseket. A `live` mindig `false`, a `child_application_status` mindig `unknown`. A beállított érték nem bizonyítja, hogy a Child-webhelyre is eljutott. A megfigyelések frissítéséhez szinkronizáld külön a webhelyet; a jelentett törlési időbélyeg önmagában nem igazolja, hogy a szolgáltató sikeres volt.

## Webhelyállapotok listája

Képesség: `mainwp/list-site-cache-control-statuses-v1`, GET.

```bash
curl -G -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  --data-urlencode 'input_json={"cursor":0,"limit":25}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/list-site-cache-control-statuses-v1/run'
```

| Paraméter | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `cursor` | egész | nem | `0` | A listát az ennél nagyobb azonosítójú webhelyektől folytatja |
| `limit` | egész | nem | `25` | A jelölt webhelyek legnagyobb száma oldalanként, 1-től 100-ig |

A válasz az `items` tömböt, a `next_cursor` és a `has_more` értéket tartalmazza. Minden elem szerkezete megegyezik az egy webhelyes állapotválaszéval. A webhelyek növekvő azonosító szerint kerülnek sorra. Amíg a `has_more` értéke `true`, a visszaadott `next_cursor` értéket add át a következő kérés `cursor` paramétereként. Ne hagyd abba azért, mert egy oldalon kevesebb elem van a `limit`-nél, vagy üres: a jogosultsági ellenőrzés kihagyhat webhelyeket az oldalról. A lapozás végén a `has_more` értéke `false`, a `next_cursor` pedig `null`.

## Globális beállítások olvasása

Képesség: `mainwp/get-global-cache-control-configuration-v1`, GET. Bemeneti tulajdonságot nem fogad.

```bash
curl -G -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  --data-urlencode 'input_json={}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-global-cache-control-configuration-v1/run'
```

Példaválasz:

```json
{
  "auto_purge_enabled": true,
  "cloudflare_enabled": false,
  "cloudflare_auth_method": "token",
  "credential_state": "stored_unverified"
}
```

A `cloudflare_auth_method` értéke `token` vagy `email_key`. A `credential_state` a kiválasztott módszer tárolási állapotát írja le:

| Érték | Jelentés |
|---|---|
| `missing` | A kiválasztott módszerhez nincs tárolt hitelesítő adat |
| `stored_unverified` | Van titkosított hitelesítőadat-rekord a várt formátumban; a visszafejtést és a Cloudflare általi elfogadást nem próbálták ki |
| `legacy_pending` | Egy régebbi globális API-kulcs vár a titkosított tárolásra történő átvitelre |
| `malformed` | A tárolt hitelesítőadat-rekord formátuma váratlan |

Ez az olvasás nem fejti vissza, nem viszi át és nem ellenőrzi a hitelesítő adatokat, és nem ad vissza API-kulcsot, tokent vagy e-mail-címet. Ha nincs mentett engedélyezési beállítás, mindkét engedélyezési jelző `false`.

## Globális törlési szabály beállítása

Képesség: `mainwp/set-global-cache-control-policy-v1`, POST. Mindkét logikai mező kötelező. A példa bekapcsolja az automatikus gyorsítótár-törlést, és kikapcsolja a globális Cloudflare-törlést:

```bash
curl -X POST -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"auto_purge_enabled":true,"cloudflare_enabled":false}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/set-global-cache-control-policy-v1/run'
```

A válasz tartalmazza a `previous` és a `current` objektumot (mindkettőben a két jelzővel), a `changed` logikai értéket és a `sync_status: "not_requested"` mezőt. Ha a meglévő értékekkel hívod meg, a `changed` értéke `false`. A hívás csak a két globális engedélyezési beállítást módosítja: a hitelesítő adatokat, a hitelesítési módot, a tömeges kérések korlátját és a kérések közti késleltetést nem. A webhelyenkénti felülbírálások továbbra is érvényesek.

## Webhelyszabály beállítása

Képesség: `mainwp/set-site-cache-control-policy-v1`, POST. Mindhárom mező kötelező: `site_id`, `auto_purge_mode` és `cloudflare_mode`. A két módmezőnek egész számnak kell lennie, és a jelentésük eltér:

| Érték | `auto_purge_mode` | `cloudflare_mode` |
|---|---|---|
| `0` | Az automatikus törlés kikapcsolva | A globális Cloudflare-beállítások használata |
| `1` | Az automatikus törlés bekapcsolva | A webhely saját Cloudflare-hitelesítő adatainak használata |
| `2` | A globális automatikus törlési beállítás öröklése | A Cloudflare-törlés kikapcsolva ennél a webhelynél |

A példában az `1` azonosítójú webhely mindkét globális beállítást örökli:

```bash
curl -X POST -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id":1,"auto_purge_mode":2,"cloudflare_mode":0}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/set-site-cache-control-policy-v1/run'
```

A válasz tartalmazza a `site_id` mezőt, a `previous` és a `current` objektumot (mindkettőben a két móddal), a `changed` logikai értéket és a `sync_status: "not_requested"` mezőt. A hitelesítő adatok nem változnak.

Egyik szabályképesség sem szinkronizál és nem töröl webhelyet. A beállítások módosítása után az érintett webhelyeket szinkronizáld külön. A sikeres mentés csak azt jelenti, hogy a vezérlőpult eltárolta a beállításokat, azt nem, hogy a MainWP Child is alkalmazza őket. A Cloudflare-törlés engedélyezése előtt add meg a hitelesítő adatokat a Cache Control beállításaiban.

## Cloudflare-hitelesítő adatok ellenőrzése

Képesség: `mainwp/validate-cloudflare-credentials-v1`, GET.

```bash
curl -G -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  --data-urlencode 'input_json={"site_id":1}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/validate-cloudflare-credentials-v1/run'
```

Ez a webhely Cloudflare-módja által kiválasztott, tárolt hitelesítő adatokat ellenőrzi. Kapcsolatba léphet a Cloudflare-rel, de nem menti és nem cseréli le a hitelesítő adatokat, nem szinkronizálja a webhelyet, és nem töröl gyorsítótárat. Hitelesítő adatok értékét nem ad vissza.

| Válaszmező | Értékek vagy jelentés |
|---|---|
| `site_id` | A kért webhely azonosítója |
| `resolved_scope` | `global`, `site` vagy `disabled` |
| `auth_method` | `token`, `email_key` vagy `none` |
| `credential_status` | `valid`, `invalid`, `network_error`, `missing`, `malformed` vagy `disabled` |
| `provider_request_performed` | Megkísérelte-e a művelet a Cloudflare-kérést |
| `checked_at` | Az ellenőrzés Unix-időbélyege |

Ha a webhelynél a Cloudflare-törlés ki van kapcsolva, az ellenőrzés kimarad, és az eredmény `disabled`. Ha a webhely a globális hitelesítő adatokat örökli, az ellenőrzés akkor is megvizsgálhatja őket, ha a globális Cloudflare-törlés ki van kapcsolva. A `valid` azt jelenti, hogy a hitelesítő adatok átmentek a Cloudflare ellenőrzésén, de azt nem, hogy a webhely zónájához van hozzáférésük, vagy törölhetnek. A régi, átvitelre váró hitelesítő adatok itt `malformed` eredményt adhatnak: nézd át és mentsd el őket a Cache Control beállításaiban, mielőtt újra ellenőrzöd. Ez az ellenőrzés nem végez átvitelt.

## Egy webhely gyorsítótárának törlése

Képesség: `mainwp/purge-site-cache-v1`, POST. A törlést a MainWP Childon már alkalmazott beállítások szerint kéri, és nem szinkronizálja előtte az újonnan mentett vezérlőpult-beállításokat.

A hívás **azonnal valódi gyorsítótár-törlést indít**. Csak a `site_id` mezőt fogadja, nincs `dry_run` és `confirm` paramétere. Bár romboló jelölésű, POST-ot használ, mert nincs idempotensként megjelölve.

```bash
curl -X POST -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id":1}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/purge-site-cache-v1/run'
```

Példaválasz:

```json
{
  "site_id": 1,
  "overall": "dispatched_unverified",
  "plugin_cache": {
    "attempted": true,
    "result_basis": "dispatched_unverified"
  },
  "cloudflare": {
    "attempted": true,
    "result_basis": "provider_confirmed"
  },
  "last_purged_at": 1790150400
}
```

Az `overall` mezőt akkor is nézd meg, ha a HTTP-kérés sikeres volt:

| `overall` | Jelentés |
|---|---|
| `confirmed` | Legalább egy gyorsítótár-réteget megkíséreltek, és nincs jelentett hiba vagy meg nem erősített kiküldés |
| `dispatched_unverified` | Hibát nem jelentettek, de legalább egy réteget szolgáltatói megerősítés nélkül küldtek ki |
| `failed` | Legalább egy réteg hibát jelentett, akkor is, ha egy másik sikerült |
| `not_attempted` | Egyik réteget sem kísérelték meg |
| `unknown` | Nincs ismert eredmény; akkor is ez az érték, ha a gyorsítótárazott eredmény nem érhető el |

A `plugin_cache` és a `cloudflare` objektumban is van `attempted` és `result_basis` mező:

| `result_basis` | Jelentés |
|---|---|
| `provider_confirmed` | A szolgáltató felismert választ adott; a sikerhez vagy hibához az `overall` értékét és a naplókat használd |
| `dispatched_unverified` | A törlést kiküldték, de nincs megerősítés arról, hogy a szolgáltató befejezte |
| `provider_missing` | A gyorsítótár-szolgáltató vagy a szükséges törlési függvény nem volt elérhető |
| `not_attempted` | Ennél a rétegnél nem kíséreltek meg törlést |
| `preflight_failed` | Egy előfeltétel megbukott a törlési kérés előtt, például hiányzó hitelesítő adat vagy sikertelen zónakeresés |
| `attempt_failed` | A törlést megkíséreltek, de sikertelen volt, vagy használhatatlan választ adott |

A MainWP Child 6.3-mal a Pressable Cache Management csak akkor jelent szolgáltatói megerősítést, ha az összes szükséges réteg sikerült: az objektum-gyorsítótár, a Batcache (ha elérhető) és az Edge cache (ha be van kapcsolva). A sikertelen réteg sikeres időbélyeg helyett sikertelen eredményt ad. A `last_purged_at` a Child válaszában szereplő legutóbbi bővítmény- vagy Cloudflare-törlési időbélyeg, vagy `0`, ha nem elérhető. Lehet korábbi időbélyeg is, és nem írja felül az `overall` értékét. Tartsd naprakészen a MainWP Childot: a képesség szerkezetes törlési eredményt vár, a `result_basis` mezővel együtt. Ha a Child ezek nélkül válaszol, `mainwp_cache_control_purge_result_invalid` hiba a válasz; ilyenkor a gyorsítótár még törlődhetett, ezért az újrapróbálás előtt nézd meg a webhely naplóit.

## Az utolsó törlési eredmény

Képesség: `mainwp/get-site-cache-purge-outcome-v1`, GET.

```bash
curl -G -u 'FELHASZNALONEV:ALKALMAZASJELSZO' \
  --data-urlencode 'input_json={"site_id":1}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-site-cache-purge-outcome-v1/run'
```

A válasz mezői: `site_id`, `available`, `observed_at`, `overall`, `plugin_cache` és `cloudflare`. Az eredmény- és rétegmezők a fent leírt értékeket használják. Az `observed_at` a tárolt eredmény megfigyelési ideje, nem a szolgáltató törlési időbélyege. Az olvasás a vezérlőpulton tárolt szerkezetes eredményt adja vissza, anélkül hogy a Child-webhelyet megkeresné. Ha nincs érvényes szerkezetes eredmény, a válasz `available: false`, `observed_at: 0`, `overall: "unknown"`, és mindkét réteg meg nem kísérelt. Ez nem jelenti azt, hogy a webhelyet még sosem törölték: régebbi naplók vagy utolsó törlési időbélyeg létezhetnek szerkezetes eredmény nélkül is.

## Hibakezelés

A hitelesítési, séma- és metóduselhelyezési hibák az Abilities API hibakódjait követik. A Cache Control emellett a következőket adhatja:

| Kód | HTTP | Jelentés |
|---|---|---|
| `mainwp_cache_control_invalid_input` | 400 | Érvénytelen webhelyazonosító, mód, értéktípus vagy bemeneti mező |
| `mainwp_cache_control_access_denied` | 403 | A Cache Control, a vezérlőpult-jogosultság vagy a webhelyhozzáférés elutasítva |
| `mainwp_cache_control_site_not_found` | 404 | A kért webhely nem található |
| `mainwp_cache_control_purge_in_progress` | 409 | Ennél a webhelynél már folyamatban van egy törlés |
| `mainwp_cache_control_site_unavailable` | 409 | A webhely nem érhető el törléshez, felfüggesztett állapotban sem |
| `mainwp_cache_control_global_policy_write_failed` | 500 | A globális szabályt nem sikerült menteni |
| `mainwp_cache_control_site_policy_write_failed` | 500 | A webhelyszabályt nem sikerült menteni |
| `mainwp_cache_control_status_list_failed` | 500 | A webhelyállapotokat nem sikerült beolvasni |
| `mainwp_cache_control_credential_read_failed` | 500 | A tárolt hitelesítőadat-állapotot nem sikerült beolvasni |
| `mainwp_cache_control_purge_outcome_storage_failed` | 500 | A törlés eredményt adott, de a szerkezetes eredményt nem sikerült eltárolni |
| `mainwp_cache_control_child_unavailable` | 502 | A Cache Control Child-integrációja nem érhető el |
| `mainwp_cache_control_purge_transport_unknown` | 502 | A törlés eredményét nem sikerült megerősíteni |
| `mainwp_cache_control_purge_result_invalid` | 502 | A Child érvénytelen vagy nem támogatott törlési eredményt adott |

A szabályírási hibák `data.rollback_failed` mezőt is tartalmaznak. Ha az értéke `true`, olvasd be az aktuális beállításokat, és a szinkronizálás előtt oldd meg a mentési hibát. Törlési átviteli, eredmény- vagy tárolási hiba után az újrapróbálás előtt vizsgáld meg a webhelyet és a naplókat, mert a törlés már megtörténhetett.
