Ruang penulis
← Kembali ke jurnal
Laravel

Menyimpan Statistik Dashboard Laravel dalam Cache

Kurangi penghitungan berulang dengan Cache::remember dan tentukan kapan data perlu disegarkan.

DAdministrator · 21 Sep 2026 · 1 menit baca

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.

Referensi

Dokumentasi resmi

← Jelajahi catatan lainnya