1. İleri Düzey Veritabanı İlişkileri: Eager Loading ve Lazy Loading
Laravel, veritabanı ilişkilerini yönetmek için oldukça esnek bir yapı sunuyor. Ancak, ilişkili verilerle çalışırken sık yapılan hatalardan biri, gereksiz veri yüklemeleri yapmaktır. Bu da performans sorunlarına yol açar. Laravel’de, eager loading ve lazy loading gibi iki güçlü yöntem bulunur.
Eager loading, ilişkili tüm verileri bir kerede çekmek için kullanılır, bu sayede SQL sorgularının sayısı azalır. Lazy loading ise ilişkili veriler yalnızca gerektiğinde yüklenir. İhtiyacınız olan veri miktarına göre doğru seçimi yaparak sorgularınızın hızını artırabilirsiniz.
Örnek: Eager Loading Kullanımı
$posts = Post::with('comments')->get();
Bu şekilde, yorumları her bir yazı için ayrı ayrı sorgulamadan topluca çekebilirsiniz.
2. Cache Kullanımı: Veritabanı Sorgularını Hızlandırma
Laravel, cache yönetimini oldukça kolaylaştırır. Cache kullanmak, tekrarlanan veritabanı sorgularını engelleyerek uygulamanızın hızını ciddi anlamda artırabilir. Özellikle büyük veri kümeleriyle çalışan uygulamalarda, cache kullanmak bir zorunluluk haline gelir.
Örnek: Cache Kullanımı
Cache::remember('posts', 60, function() {
return DB::table('posts')->get();
});
Bu kod, ‘posts’ verisini 60 dakika boyunca cache’ler ve her 60 dakika sonra yeni bir sorgu yapılır.
3. Veritabanı Sorgu İyileştirmeleri: Index Kullanımı
Veritabanı performansını artırmak için kullanabileceğiniz en basit yöntemlerden biri, doğru alanlarda index oluşturmaktır. Laravel’de migration dosyaları aracılığıyla kolayca index ekleyebilirsiniz. Bu, sorgularınızın hızını önemli ölçüde artırabilir.
Örnek: Migration ile Index Eklemek
Schema::table('posts', function (Blueprint $table) {
$table->index('title');
});
Bu şekilde, 'title' alanı üzerinde sorgulamalar yapıldığında, veritabanı performansında gözle görülür bir iyileşme sağlar.
4. Query Scope: Kodu Temiz ve Performanslı Tutma
Laravel’in query scope özelliği, karmaşık sorguları daha düzenli ve tekrar kullanılabilir hale getirir. Ayrıca, performans iyileştirmeleri sağlamak için sorguları optimize etmenize olanak tanır. Sık kullanılan sorgularınız için scope tanımlayarak uygulamanızın hızını artırabilirsiniz.
Örnek: Global Scope Tanımlama
class Post extends Model
{
protected static function booted()
{
static::addGlobalScope('published', function (Builder $builder) {
$builder->where('status', 'published');
});
}
}
Bu örnek, yalnızca yayınlanan yazıları almak için global bir scope tanımlar.
5. Artisan Komutları: Sunucu İyileştirmeleri ve Hız
Laravel’in sunduğu Artisan komutları, günlük geliştirme işlerinizi hızlandırır. Ancak, bu komutları sadece geliştirme sürecinde değil, üretim ortamında da kullanarak performans iyileştirmeleri yapabilirsiniz. Örneğin, `php artisan optimize` komutu ile uygulamanızın hızını artırabilir ve gereksiz dosya yüklemelerini engelleyebilirsiniz.
Örnek: Artisan Cache Clear
php artisan config:cache
Bu komut, yapılandırma dosyalarınızı cache’ler ve daha hızlı yüklenmesini sağlar.
6. Route Caching: Hızlı Yönlendirmeler
Laravel’de route caching özelliği, büyük uygulamalarda yönlendirme (route) işlemlerini hızlandırır. Özellikle çok sayıda yönlendirme olan bir uygulamada, bu yöntem ciddi performans artışı sağlar. Yönlendirme dosyanızda değişiklik yapmadığınız sürece, route’ları cache’leyerek uygulamanızın hızını önemli ölçüde artırabilirsiniz.
Örnek: Route Cache Komutu
php artisan route:cache
Bu komut, yönlendirme dosyalarınızı cache’ler ve her yönlendirme için daha hızlı sonuç almanızı sağlar.
7. Queue Sistemi: Zaman Alıcı İşlemleri Arka Plana Almak
Laravel’in queue sistemi, zaman alıcı işlemleri arka planda çalıştırarak uygulamanızın yanıt verme hızını artırır. Kullanıcılar için önem taşımayan, ancak zaman alan işlemler (e-posta gönderme, dosya yükleme vb.) bu sistemle arka planda işlenebilir, böylece kullanıcı deneyimi iyileştirilir.
Örnek: Laravel Queue Kullanımı
dispatch(new SendWelcomeEmail($user));
Bu kod, e-posta gönderimini kuyrukta işler ve uygulamanın hızını olumsuz etkilemez.
Sonuç
Laravel, sunduğu güçlü özelliklerle web geliştiricilerinin hayatını kolaylaştırırken, doğru tekniklerle kullanıldığında performans iyileştirmeleri yapmanıza da olanak tanır. Bu yazıda, Laravel’in genellikle göz ardı edilen ancak uygulama hızını ve verimliliğini artıran 7 gizli ipucunu inceledik. Bu özellikleri kullanarak projelerinizdeki performans sorunlarını çözebilir ve daha hızlı, verimli uygulamalar geliştirebilirsiniz.