11 Ocak 2026 - Muzibu Anasayfa Sidebar Güncellemesi
Anasayfa sağ tarafındaki "Yeni Şarkılar" ve "Popüler Şarkılar" bölümlerini "Popüler Playlistler" ve "Popüler Radyolar" olarak değiştireceğiz.
Kullanıcılar her anasayfaya geldiklerinde farklı içerikler görecek. Bu da keşif deneyimini artırır ve kullanıcı etkileşimini yükseltir. Admin panelden öne çıkan içerikleri kontrol edebilirsiniz.
sidebar-right.blade.php (720-755. satırlar)
2 Tab: "Yeni Şarkılar" ve "Popüler Şarkılar"
$newSongs ve $popularSongs değişkenleri
Her tab'da 15 şarkı gösteriliyor
❌ Eski
• Yeni Şarkılar
• Popüler Şarkılar
✅ Yeni
• Popüler Playlistler
• Popüler Radyolar
is_featured = 1 olan playlist ve radyolar
Her tab'da 20 item (15'ten 20'ye çıkacak)
Her yenilemede random shuffle (farklı 20 item)
Playlist::featured()->active()->inRandomOrder()->limit(20)->get()
✅ Avantajlar:
❌ Dezavantajlar:
Performans: 100+ featured item varsa her request 50-200ms ekstra süre
Cache::remember('featured_playlists', 3600, function() {
return Playlist::featured()->active()->get();
})->shuffle()->take(20);
✅ Avantajlar:
❌ Dezavantajlar:
Performans: İlk request ~50ms, sonraki requestler ~5ms
// Cache: Sadece ID'leri sakla (hafif)
$ids = Cache::remember('featured_playlist_ids', 3600, function() {
return Playlist::featured()->active()->pluck('playlist_id')->toArray();
});
// Random 20 ID seç
$randomIds = collect($ids)->shuffle()->take(20);
// DB'den sadece seçilen 20'yi getir
Playlist::whereIn('playlist_id', $randomIds)->get();
✅ Avantajlar:
❌ Dezavantajlar:
Performans: İlk request ~30ms, sonraki requestler ~10ms
// Cache: 100 featured item (ID + temel bilgiler)
$pool = Cache::remember('featured_playlists_pool', 3600, function() {
return Playlist::featured()->active()
->with('sectors:sector_id,title') // Eager load
->limit(100) // Pool size
->get(['playlist_id', 'title', 'slug', 'is_radio']);
});
// Random 20 seç (collection'dan, DB yok)
$randomPlaylists = $pool->shuffle()->take(20);
✅ Avantajlar:
❌ Dezavantajlar:
🚀 Performans:
💡 Neden En İyi: 100 item pool'dan 20 random seçmek, her seferinde DB'den 20 random item çekmekten 20-50x daha hızlı. Cache sayesinde sunucu yükü minimal.
Cache Key'ler:
featured_playlists_pool (100 playlist)featured_radios_pool (100 radio)Cache Süresi:
1 saat (3600 saniye)
Cache Invalidation:
Admin panelden playlist/radio update edilince cache temizlenir
// app/Providers/ViewServiceProvider.php
View::composer('themes.muzibu.components.sidebar-right', function ($view) {
$featuredPlaylists = app(MuzibuService::class)->getFeaturedPlaylistsForSidebar();
$featuredRadios = app(MuzibuService::class)->getFeaturedRadiosForSidebar();
$view->with(compact('featuredPlaylists', 'featuredRadios'));
});
// MuzibuService::getFeaturedPlaylistsForSidebar()
public function getFeaturedPlaylistsForSidebar(int $count = 20): Collection
{
// Cache pool (100 item)
$pool = Cache::remember('featured_playlists_pool', 3600, function() {
return Playlist::featured()->active()
->where('is_radio', 0) // Sadece playlist
->limit(100)
->get(['playlist_id', 'title', 'slug']);
});
// Random 20 seç
return $pool->shuffle()->take($count);
}
// PlaylistService::toggleFeatured() veya update()
public function update($id, $data)
{
// ... update işlemi ...
// Cache'i temizle
Cache::forget('featured_playlists_pool');
return $playlist;
}
getFeaturedPlaylistsForSidebar() ve getFeaturedRadiosForSidebar()
sidebar-right için view composer ekle
Şarkı tablarını playlist/radio tablarına çevir
x-muzibu.playlist-simple-card ve x-muzibu.radio-simple-card
Popüler Playlistler, Popüler Radyolar metinleri
PlaylistService ve RadioService'e cache temizleme
Anasayfayı yenile, farklı içerikler göründüğünü kontrol et
✅ Test 1: Random Shuffle
Anasayfayı 5 kez yenile → Her seferinde farklı 20 playlist/radio görmeli
✅ Test 2: Featured Toggle
Admin panelden bir playlist'i featured yap → 1 dakika içinde sidebar'da görünmeli
✅ Test 3: Performance
Chrome DevTools → Network → sidebar render süresi < 50ms olmalı
✅ Test 4: Empty State
Hiç featured yoksa → Boş durum mesajı göstermeli
Seçenek 4: Smart Cache Pool - En hızlı ve en verimli yöntem