Bloğa Geri Dön

[Paket] - Laravel Eloquent Query Cache

Laravel

18 May, 2025, 19:22 Pazar

Ortalama okuma süresi 2 dakika

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 Query Cache
Laravel Eloquent Query Cache

[Paket] - Laravel Eloquent Query Cache

Paket Tanımı (Repo)

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.

Paket Kullanım Amacı

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.

Paketin Kurulumu

Konsolunuzu açın ve paketi Composer ile yükleyin:

composer require rennokki/laravel-eloquent-query-cache

Modelleri Hazırlama

Önbellekleme uygulamak istediğiniz her model, Rennokki\QueryCache\Traits\QueryCacheable trait'ini kullanmalıdır.

use Rennokki\QueryCache\Traits\QueryCacheable;

class Podcast extends Model
{
    use QueryCacheable;
}

🙌 Vitrin (Showcase)

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.

use Rennokki\QueryCache\Traits\QueryCacheable;

class Article extends Model
{
    use QueryCacheable;

    /**
     * Sorguların ne kadar süreyle önbellekte tutulacağını belirtir.
     * Belirtilmezse ya da null olarak ayarlanırsa önbellekleme devre dışı kalır.
     *
     * @var int|\DateTime
     */
    public $cacheFor = 3600; // saniye cinsinden önbellekleme süresi
}

Aşağıdaki iki sorgu, önbellek depolamasında farklı anahtarlar oluşturur. Bu sayede birbirlerinin önbelleğiyle çakışmazlar.

// Bu sorgu için şu SQL kullanılarak bir hash oluşturulur:
// SELECT * FROM articles ORDER BY created_at DESC LIMIT 1;
$latestArticle = Article::latest()->first();

// Bu sorgu için:
// SELECT * FROM articles WHERE published = 1;
$publishedArticles = Article::wherePublished(true)->get();

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.

/**
 * Veritabanında bir güncelleme gerçekleştiğinde
 * önbelleğin otomatik olarak temizlenmesini sağlar.
 *
 * @var bool
 */
protected static $flushCacheOnUpdate = true;

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.

   /**
 * Sorguların önbellekte ne kadar süre tutulacağını belirtir.
 * null olarak ayarlanırsa önbellekleme devre dışı kalır.
 *
 * @return int|\DateTime|null
 */
protected function cacheForValue()
{
    // Eğer ortam "production" değilse (örneğin local veya staging ise),
    // önbellekleme yapılmaz.
    if(app()->environment() !== 'production') {
        return null;
    }

    // Eğer oturumdaki kullanıcı varsa ve admin ise, yine önbellekleme yapılmaz.
    if (optional(request()->user())->is_Admin == 1) {
        return null;
    }

    // Yukarıdaki şartlar sağlanmıyorsa, tanımlı $cacheFor süresi kadar önbellekleme yapılır.
    return $this->cacheFor;
}

 

https://leqc.renoki.org/ adresinden dökümantasyonu https://github.com/renoki-co/laravel-eloquent-query-cache adresinde repoyu inceleyebilirsiniz.

Fullstack Web Developper & Laravel Dev & SysAdmin

Kategoriden Yazılar
Yazardan Yazılar
[Paket] - Laravel Eloquent Query Cache

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 Query Cache
Laravel Projeleri Nasıl Yayınlanır? LaraSail ile DigitalOcean ve Ubuntu Deploy Rehberi

Laravel projenizi yayına almak için Nginx kurulumu, PHP sürüm ayarları veya SSL yapılandırmasıyla uğraşmak zorunda değilsiniz. LaraSail, tüm bu teknik süreçleri otomatikleştirerek deploy işlemini oldukça basit hale getirir.

LaraSail ile DigitalOcean ve Ubuntu Deploy Rehberi
SAP B1 Entegre Mesai ve İzin Takip Sistemi ile İnsan Kaynaklarında Dijital Dönüşüm

Kurumsal işletmeler için geliştirilen SAP entegre mesai ve izin takip sistemi, hem üretim hem idari alanlarda süreçleri dijitalleştiriyor. Anlık raporlama, mobil uyumlu kullanım, resmi belge ve imza yönetimi, gelişmiş filtreleme ve PKDS entegrasyonu ile insan kaynakları yönetimini hızlandırıyor ve şeffaflaştırıyor.

SAP B1 Entegre Mesai ve İzin Takip Sistemi ile İnsan Kaynaklarında Dijital Dönüşüm
Talaşlı İmalatta SAP ile Elmas Takibi: ERP Destekli Kesici Takım Yönetimi

Talaşlı imalat süreçlerinde kesici elmasların hangi personel, hangi departman ve hangi proje için ne kadar tüketildiğini anlık olarak izlemek artık mümkün. SAP Business One üzerine geliştirdiğimiz Elmas Analiz ekranı; stok optimizasyonu, maliyet kontrolü ve proje bazlı raporlama ihtiyaçlarını tek bir ekranda birleştirerek üretim sahasında şeffaflık ve hız sağlıyor.

SAP’de ISO 9001’e Uygun Onaylı Tedarikçi Skorlama ve Performans Yönetimi

SAP Business One üzerinde geliştirdiğimiz onaylı tedarikçi yönetim sistemi; kalite, teslimat, fiyat ve miktar kriterlerini ağırlıklı skor kartı ile izleyerek ISO 9001:2015’in 8.4 maddesine tam uyum sağlıyor. Bu yazıda tedarikçi performansını puanlayan ekranlar, raporlama araçları ve denetime hazır süreçlerin nasıl kurulduğunu detaylı olarak inceleyebilirsiniz.

SAP’de ISO 9001’e Uygun Onaylı Tedarikçi Skorlama ve Performans Yönetimi