Bu paket, kullanılan SQL sorgularını izleyip önbellekte anahtar olarak kullanabilme yeteneğine sahiptir. Bu sayede, sorguya özel önbellekleme oldukça kolay hale gelir ve ORM kullanımınızdan bağımsız çalışır.
Laravel Eloquent Sorgu Önbellekleme, Laravel'den uzun zaman önce kaldırılmış olan remember() fonksiyonelliğini geri getirir. Veritabanı sorgularında önbelleği kullanarak doğrudan Eloquent düzeyinde önbellekleme işlevselliği ekler.
Direk bir örneklendirme ile başlamak bence çok doğru olacak. Örneğin websitenizde kategorilerinizin bulunduğu bir ürün ağacı sistemi var ve bu verileri tüm sayfalarda gösteriyorsunuz ve veriler çok sık güncellenmiyor (güncellense dahi çok problem değil) malum bu veriler aynı zamanda birden çok relationship içerebilir vs. vs. her seferinde sayfa yüklenmelerinde bu querylerinizi çalıştırmak yerine cacheleyip tek noktadan çok hızlı veri alabilirsiniz.
Ve bu paket bu işlemi okadar kolaylaştırıyorki kullanmamak bence çok büyük bir ayıp.
Konsolunuzu açın ve paketi Composer ile yükleyin:
Önbellekleme uygulamak istediğiniz her model, Rennokki\QueryCache\Traits\QueryCacheable trait'ini kullanmalıdır.
Bu paket, kullanılan SQL sorgularını izleyip önbellekte anahtar olarak kullanabilme yeteneğine sahiptir. Bu sayede, sorguya özel önbellekleme oldukça kolay hale gelir ve ORM kullanımınızdan bağımsız çalışır.
Varsayılan olarak önbellekleme devre dışıdır. Aktif hale getirmek için modelinizde $cacheFor özelliğine bir değer atamanız gerekir.
Aşağıdaki iki sorgu, önbellek depolamasında farklı anahtarlar oluşturur. Bu sayede birbirlerinin önbelleğiyle çakışmazlar.
Ayrıca önbelleklenmiş verilerinizi güncelleme esnasında tekrar güncellemek için sizin birşey yapmanızada gerek yok modelinizin içine şunu eklemeniz yeterli olacaktır.
Eğer site genelinde bir ön bellek temizleme yapmak isterseniz php artisan cache:clear işinizi görecektir.
Ben bu paketi kullanırken genelde bir trait oluşturmayı daha mantıklı buluyorum bahsetmiş olduğum tüm değerleri bu trait altında toplayıp daha sonrasında ilgili modellere trait'i ekliyorum.
Ayrıca development aşamasında önbellekleme ile uğraşmak istemiyorsanız aşağıdaki koduda model / trait'e ekleyerek önbelleklemenin sadece production ortamında çalışması sağlanabilir.
Fullstack Web Developper & Laravel Dev & SysAdmin