Pola Invalidasi Cache
Terapkan strategi invalidasi cache-aside, write-through, dan berbasis TTL.
Pola Invalidasi Cache adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Masalah yang Sulit
"Hanya ada dua hal sulit dalam Ilmu Komputer: invalidasi cache dan penamaan sesuatu." — Phil Karlton. Mengetahui kapan dan bagaimana menginvalidasi data yang tersimpan dalam cache sangatlah penting.
Kedaluwarsa Berbasis TTL (Pasif)
Strategi paling sederhana: tetapkan TTL dan terima bahwa cache mungkin menyajikan data usang hingga durasi tersebut. Strategi ini cocok ketika sedikit data usang masih dapat diterima.
<?php
Cache::put("user:1", $user, 300); // expires in 5 minutes automaticallyInvalidasi Tulis-Tembus
Saat Anda memperbarui data, segera hapus atau perbarui kunci cache yang terkait.
<?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);
}Pemberian Tag pada Cache
Beri tag pada entri cache yang terkait agar Anda dapat menginvalidasi seluruh grup sekaligus — misalnya semua entri cache untuk pengguna tertentu.
<?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();Invalidasi Berbasis Peristiwa
Dalam Laravel, gunakan peristiwa model Eloquent untuk menginvalidasi cache secara otomatis saat model disimpan atau dihapus.
<?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 di Sisi Aplikasi dengan Pemberian Versi
Tambahkan nomor versi ke kunci cache. Menambah versi secara efektif menginvalidasi semua entri yang ada tanpa menghapusnya.
<?php
$v = Cache::get("user:version", 1);
$key = "user:{$id}:v{$v}";
// To invalidate: increment the version
Cache::increment("user:version");Kedaluwarsa Awal Probabilistik (PER)
Untuk mencegah serbuan cache, hitung ulang cache sedikit sebelum kedaluwarsa pada sebagian permintaan. Cara ini mencegah kedaluwarsa serentak di semua server.
Penyegaran di Latar Belakang
Tugas di latar belakang mengisi kembali entri cache yang sering dibaca sebelum kedaluwarsa. Cache tidak pernah kosong — pembacaan selalu berlangsung cepat.
Sajikan Data Lama Sambil Memvalidasi Ulang
Sajikan data lama segera sambil menyegarkan cache secara asinkron di latar belakang. Cara ini menghilangkan lonjakan latensi akibat cache tidak ditemukan.
Invalidasi Cache Terdistribusi
Dalam pengaturan dengan beberapa server, invalidasi kunci cache oleh satu server tidak otomatis menghapus cache lokal server lain. Gunakan publikasi/berlangganan Redis atau penyimpanan bersama untuk menyiarkan invalidasi.
Hierarki Cache
Gunakan beberapa lapisan cache: cache lokal dalam proses (APCu) di depan cache terdistribusi (Redis). Cache lokal lebih cepat, tetapi harus diinvalidasi di semua instans saat data berubah.
Ringkasan
Pola umum: kedaluwarsa TTL (sederhana), penghapusan tulis-tembus (akurat), pemberian tag (berkelompok), dan berbasis peristiwa (otomatis). Pilih berdasarkan seberapa kuat kebutuhan Anda akan kesegaran data dibandingkan kesederhanaan.
Pemeriksaan Cepat
Apa yang dilakukan oleh Cache::tags()->flush()?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola Invalidasi Cache” gratis?
Ya — teks lengkap “Pola Invalidasi Cache” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pola Invalidasi Cache”?
Terapkan strategi invalidasi cache-aside, write-through, dan berbasis TTL. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Pola Invalidasi Cache” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Caching Penting dalam PHP
- Redis sebagai Backend Cache PHP
- Memcached untuk Caching Sesi dan Objek
- Pola Invalidasi Cache