PHP Academy · leksjon

Mønstre for ugyldiggjøring av hurtigbuffer

Bruk strategier for cache-aside, write-through og ugyldiggjøring basert på TTL.

Leksjon 4 av 413 trinn

Mønstre for ugyldiggjøring av hurtigbuffer er en gratis leksjon i PHP Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i PHP Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Det vanskelige problemet

«Det finnes bare to vanskelige ting i informatikk: ugyldiggjøring av cache og navngiving av ting.» — Phil Karlton. Det er avgjørende å vite når og hvordan bufrede data skal ugyldiggjøres.

Utløping basert på TTL (passiv)

Den enkleste strategien: Angi en TTL og aksepter at cachen kan levere utdaterte data i opptil denne perioden. Dette fungerer når noe utdaterte data er akseptabelt.

<?php
Cache::put("user:1", $user, 300); // expires in 5 minutes automatically

Ugyldiggjøring ved skriving

Når du oppdaterer data, sletter eller oppdaterer du umiddelbart den tilsvarende cache-nøkkelen.

<?php
function updateUser(int $id, array $data): void {
    User::find($id)->update($data);
    Cache::forget("user:$id");         // delete cache
    // Or re-warm:
    Cache::put("user:$id", User::find($id), 300);
}

Cache-tagging

Merk relaterte cacheoppføringer med tagger, slik at du kan ugyldiggjøre en hel gruppe samtidig — for eksempel alle cacheoppføringer for en bestemt bruker.

<?php
// Store with tags:
Cache::tags(["user:1", "posts"])->put("user:1:recent-posts", $posts, 600);

// Invalidate all "user:1" entries:
Cache::tags("user:1")->flush();

Hendelsesdrevet ugyldiggjøring

I Laravel kan du bruke Eloquent-modellhendelser til å ugyldiggjøre cachen automatisk når en modell lagres eller slettes.

<?php
class User extends Model {
    protected static function booted(): void {
        static::saved(fn($u) => Cache::forget("user:{$u->id}"));
        static::deleted(fn($u) => Cache::forget("user:{$u->id}"));
    }
}

Cache-aside med versjonering

Legg til et versjonsnummer i cache-nøklene. Når du øker versjonsnummeret, ugyldiggjøres alle eksisterende oppføringer effektivt uten at de må slettes.

<?php
$v   = Cache::get("user:version", 1);
$key = "user:{$id}:v{$v}";
// To invalidate: increment the version
Cache::increment("user:version");

Probabilistisk tidlig utløping (PER)

For å hindre cache-stampeder beregner du cachen på nytt litt før den utløper for en andel av forespørslene. Dette hindrer at alle serverne utløper cachen samtidig.

Oppdatering i bakgrunnen

En bakgrunnsjobb fyller ofte leste cacheoppføringer på nytt før de utløper. Cachen blir aldri tom — lesinger er alltid raske.

Stale-While-Revalidate

Lever utdaterte data umiddelbart mens cachen oppdateres asynkront i bakgrunnen. Dette eliminerer topper i forsinkelsen ved cache-miss.

Distribuert ugyldiggjøring av cache

I et oppsett med flere servere vil ikke en server som ugyldiggjør en cache-nøkkel, automatisk tømme de lokale cachene på de andre serverne. Bruk Redis pub/sub eller et delt lager til å kringkaste ugyldiggjøringer.

Cache-hierarki

Lagdelte cacher: en lokal cache i prosessen (APCu) foran en distribuert cache (Redis). Den lokale cachen er raskere, men må ugyldiggjøres på tvers av alle instanser når data endres.

Sammendrag

Vanlige mønstre: TTL-utløping (enkelt), sletting ved skriving (nøyaktig), tagging (gruppert) og hendelsesdrevet ugyldiggjøring (automatisk). Velg basert på hvor ferske dataene må være, sett opp mot enkelhet.

Rask sjekk

Hva gjør Cache::tags()->flush()?

Gratis å komme i gang

Lær deg PHP med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
49
Leksjoner
195

Ofte stilte spørsmål

Er leksjonen «Mønstre for ugyldiggjøring av hurtigbuffer» gratis?

Ja – hele teksten i «Mønstre for ugyldiggjøring av hurtigbuffer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av PHP Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Mønstre for ugyldiggjøring av hurtigbuffer»?

Bruk strategier for cache-aside, write-through og ugyldiggjøring basert på TTL. Du øver på PHP Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med PHP Academy?

Ingen tidligere erfaring er nødvendig. PHP Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Mønstre for ugyldiggjøring av hurtigbuffer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne PHP Academy-leksjonen?

Ja. Alle PHP Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hvorfor hurtigbufring er viktig i PHP
  2. Redis som hurtigbuffer for PHP
  3. Memcached for økt- og objektbufring
  4. Mønstre for ugyldiggjøring av hurtigbuffer
← Tilbake til PHP Academy