Menyimpan Statistik Dashboard Laravel dalam Cache
Kurangi penghitungan berulang dengan Cache::remember dan tentukan kapan data perlu disegarkan.
Dashboard yang menghitung jumlah artikel pada setiap kunjungan dapat menjalankan query yang sama berkali-kali. Jika statistik boleh tertunda sebentar, cache dapat mengurangi penghitungan berulang.
Contoh ini menyimpan angka statistik global selama 60 detik. Nilai cache berupa array sederhana, sehingga pembacaannya tidak perlu membuka relasi model. Pastikan cache store sudah dikonfigurasi; database cache memerlukan tabel cache sesuai konfigurasi Laravel.
Contoh implementasi
use App\Models\Post;
use Illuminate\Support\Facades\Cache;
$stats = Cache::remember('dashboard:global:v1', 60, function (): array {
return [
'published' => Post::query()
->whereNotNull('published_at')
->where('published_at', '<=', now())
->count(),
'drafts' => Post::query()->whereNull('published_at')->count(),
];
});
return view('dashboard', ['stats' => $stats]);
// After a successful write; run after commit when using a transaction.
Cache::forget('dashboard:global:v1');
<p>Published: {{ $stats['published'] }}</p>
<p>Drafts: {{ $stats['drafts'] }}</p>
Cara memeriksa
Buka dashboard dua kali dan periksa query penghitungan di lingkungan pengembangan. Setelah cache terisi, kunjungan berikutnya menggunakan nilai cache sampai kedaluwarsa atau dihapus.
Panggil forget setelah perubahan artikel berhasil disimpan. Jika penulisan berada dalam transaksi, lakukan invalidasi setelah commit. Untuk statistik per pengguna atau organisasi, masukkan identitas pemilik ke key dan hitung hanya datanya; jangan berbagi statistik privat lewat key global.
Artikel terjadwal bisa terbit tanpa penulisan baru. TTL membatasi keterlambatan statistik pada kondisi itu. Pilih TTL berdasarkan kebutuhan produk, bukan sekadar angka yang besar.
