🎧

Ses Kalite Seçimi + Network Optimizasyon

23 Şubat 2026 • mztest.muzibu.com • 5 ABA Test ile Doğrulanmış

Admin Panel Network Perf HLS Fix Cache

📝 Basit Anlatım (Herkes İçin)

Ne Yapıldı?

  • Admin panelde ses kalite seçimi genişletildi. Eskiden sadece 3 seçenek vardı (otomatik, HLS, MP3). Şimdi her kullanıcıya özel 9 farklı kalite seviyesi atanabiliyor. Teknik terimler gizlendi — "Düşük", "Normal", "Soft" gibi anlaşılır isimler kullanıldı.
  • Sayfa açılış hızı %56 arttı. Ana sayfa 2.6 saniyede yükleniyordu, şimdi ~970 milisaniyeye düştü. Gereksiz API çağrıları kaldırıldı, önbellek sistemi güçlendirildi.
  • HLS müzik akışı kırılmıştı, düzeltildi. Şarkılar parçalı (HLS) formatla çalamıyordu ve düşük kaliteli MP3'e düşüyordu. Rota ayarları düzeltildi, artık tüm şarkılar yüksek kaliteli HLS ile çalıyor.
  • Favoriler sayfası anında açılıyor. Önceden her açılışta 373ms bekliyordu. Şimdi tarayıcı önbelleği sayesinde 1ms'ye düştü — neredeyse anında.
  • Kurumsal olmayan kullanıcılar için gereksiz "spot" çağrısı kaldırıldı. Anons (spot) sistemi sadece kurumsal müşteriler için geçerli. Normal kullanıcılar bu API'yi artık çağırmıyor — 2.2 saniye tasarruf.
  • Yandex duplike sorunu çözüldü. Analitik kodu iki kez yükleniyordu, tek sefere düşürüldü. Yanlış GTM kodu da düzeltildi.

Neden Önemli?

Sayfa hızı doğrudan kullanıcı deneyimini ve Google sıralamasını etkiler. 2.6 saniyeden 970 milisaniyeye düşmek, kullanıcıların siteyi terk etme oranını önemli ölçüde azaltır. HLS düzeltmesi ise müzik kalitesini doğrudan etkiler — kullanıcılar artık düşük kaliteli MP3 yerine adaptif yüksek kaliteli akış alıyor.

📊 Performans Sonuçları (5 ABA Test)

Genel Sayfa Performansı

Metrik Test 1 (Önceki) Test 5 (Sonrası) İyileşme
DOMContentLoaded 2658ms 970ms %63 ↓
Load 4494ms 2400ms %47 ↓
Warm Load 860ms Hızlı
Transfer (Warm) 1.6 MB 121 KB %92 ↓

Endpoint Bazlı Performans

Endpoint Önceki Sonrası İyileşme Durum
spot/settings 2273ms 0ms (çağrılmıyor) %100
last-played (cold) 1436ms 375ms %74
favorites/list (warm) 1688ms 1ms %99.9
stream API 720ms 432ms %40
featured playlists (cold) 2544ms 1379ms %46
debug/ping 503 hata 204 (375ms) 5/5 stabil
Yandex tag.js 2x duplike 1x tek counter Temiz
HLS master.m3u8 404 (kırık) 200 (çalışıyor) Düzeltildi

🎧 Admin Panel: Detaylı Ses Kalite Seçimi

Önceki Durum

Sadece 3 seçenek + ayrı Soft toggle:

audio_preference: ENUM('hls', 'mp3', 'auto') + soft_player: BOOLEAN

Yeni Durum

9 granüler seçenek, anlaşılır etiketler:

audio_preference: VARCHAR(20) — soft_player kaldırıldı

Dropdown Yapısı

─── Genel ───

0 — Auto

─── Bütün ───

1 — Düşük — Soft

2 — Normal

0 — Auto

─── Parçalı ───

1 — En düşük

2 — Düşük

1+2 — Soft

3 — Normal

0 — Auto

Bütün = MP3 (tek dosya), Parçalı = HLS (adaptif akış). Teknik terimler gizli.

Değer Eşleştirmesi (Backend)

Değer Grup Etiket Açıklama
autoGenel0 — AutoCihaz + internet hızına göre sistem seçer
mp3_64Bütün1 — Düşük — SoftEski cihaz, düşük internet
mp3_128Bütün2 — NormalNormal cihaz
mp3_autoBütün0 — AutoCihaza göre otomatik
hls_32Parçalı1 — En düşükÇok eski cihaz, çok düşük internet
hls_64Parçalı2 — DüşükEski cihaz, düşük internet
hls_softParçalı1+2 — SoftEski cihaz + düşük internet (hafif mod)
hls_128Parçalı3 — NormalNormal cihaz ve internet
hls_autoParçalı0 — Autoİnternet hızına göre otomatik

🔧 Teknik Detaylar (Geliştiriciler İçin)

1. Migration: ENUM → VARCHAR

Dosya: Modules/Muzibu/database/migrations/tenant/2026_02_22_000001_add_audio_preference_to_users.php

// Eski: $table->enum('audio_preference', ['hls','mp3','auto'])

// Yeni:

$table->string('audio_preference', 20)->default('auto');

// soft_player kolonu KALDIRILDI (hls_soft seçeneği bu işi görüyor)

Geriye uyumluluk: Eski 'hls' → 'hls_auto', eski 'mp3' → 'mp3_128' olarak işlenir.

2. Admin Panel UI

Dosya: Modules/UserManagement/resources/views/livewire/user-manage-component.blade.php

  • Soft Player toggle kaldırıldı
  • 3 seçenekli dropdown → 9 seçenekli gruplu select (<optgroup>)
  • Teknik terimler (ultralow, kbps) gizlendi
  • Gruplar: Genel / Bütün (MP3) / Parçalı (HLS)

3. SongStreamController Güncelleme

Dosya: Modules/Muzibu/App/Http/Controllers/Api/SongStreamController.php

// resolveAudioFormat() karar mantığı:

auto → mevcut cihaz/bağlantı mantığı

mp3_64 → return 'mp3' (kalite: 64k)

mp3_128 → return 'mp3' (kalite: 128k)

hls_32 → return 'hls' (level lock: ultralow)

hls_64 → return 'hls' (level lock: low)

hls_128 → return 'hls' (level lock: mid)

hls_auto → return 'hls' (ABR serbest)

hls_soft → return 'hls' (soft mode: ultralow+low)

  • isPremium() çift DB sorgusu kaldırıldı → $subscriptionData['is_premium']
  • genre eager loading eklendi (N+1 önleme)
  • soft_player referansları temizlendi

4. KRİTİK: HLS Route Regex Fix

Dosya: Modules/Muzibu/Providers/MuzibuServiceProvider.php (satır 327)

Sorun: master.m3u8 ve variant path'ler (ultralow/, low/, mid/) route regex'inde yoktu → 404

// Eski: ->where('filename', 'playlist\.m3u8|segment-\d+\.ts')

// Yeni:

->where('filename', 'master\.m3u8|playlist\.m3u8|segment-\d+\.ts|(ultralow|low|mid)/(playlist\.m3u8|segment-\d+\.ts)')

Bu fix olmadan HLS tamamen kırıktı — tüm şarkılar MP3 fallback'e düşüyordu.

5. Cache & Performans Fix'leri

A) Favorites Cache Key Bug

Modules/Favorite/App/Services/FavoriteService.php

clearCache() user_favorites_{id} siliyordu ama route user_favorites_list_{id} kullanıyordu → warm cache hiç invalidate olmuyordu. İki key de eklendi.

B) FixResponseCacheHeaders Middleware Bypass

app/Http/Middleware/FixResponseCacheHeaders.php

Middleware tüm api/* endpoint'lerine no-cache, no-store zorluyordu. Controller kendi Cache-Control header'ını set ettiyse middleware artık override etmiyor. Ayrıca hls/* ve hls-key/* path'leri bypass eklendi.

C) Browser Cache Headers

favorites/list ve last-played response'larına Cache-Control: private, max-age=30 eklendi → 30 saniye browser disk cache'ten serve.

D) spot/settings Redis Cache + Eager Load

Modules/Muzibu/App/Http/Controllers/Front/CorporateFrontController.php

5 dk Redis cache eklendi. with('media') eager load ile N+1 sorgusu önlendi.

E) last-played Tam Response Cache

Modules/Muzibu/App/Http/Controllers/Api/SongController.php

Önceden sadece DB sorgusu cache'liydi, getCoverUrl() ve getTranslated() her seferinde çalışıyordu. Şimdi tüm JSON response tek cache'te (2 dk).

F) featured playlists Optimizasyon

Modules/Muzibu/App/Http/Controllers/Api/PlaylistController.php

media eager loading eklendi (getCoverUrl N+1 önleme). Cache TTL 5dk → 30dk artırıldı.

6. Diğer Düzeltmeler

Yandex Duplike Temizliği

  • 8 landing dosyasından hardcoded Yandex kaldırıldı
  • auto-platforms component'ten hardcoded fallback ID silindi
  • 3 landing layout'a <x-marketing.auto-platforms /> eklendi
  • minimal.blade.php'daki yanlış GTM ID (GTM-P8HKHCG9) düzeltildi

debug/ping Lightweight Middleware

routes/tenant.php

Endpoint web middleware grubundan çıkarıldı → session/cookie overhead yok → 503 hatası çözüldü.

Spot Player — Kurumsal Kontrol

  • layouts/app.blade.php'ye isCorporate flag eklendi
  • spot-player.js auto-init sadece corporate kullanıcılarda çalışıyor
  • Non-corporate kullanıcılarda 0 API çağrısı → 2273ms tasarruf

Livewire Component

Modules/UserManagement/App/Http/Livewire/UserManageComponent.php

soft_player kaldırıldı. Validation: in:auto,mp3_64,mp3_128,mp3_auto,hls_32,hls_64,hls_128,hls_auto,hls_soft

User Model

app/Models/User.php

soft_player fillable ve casts'tan kaldırıldı. audio_preference açıklaması güncellendi.

🧪 ABA Test Geçmişi (5 İterasyon)

Test Tarih Odak Sonuç
Test 1 23.02 ~02:30 Baseline ölçüm (14 madde A-N) 6 sorun tespit edildi
Test 2 23.02 ~03:03 İlk fix'ler (Yandex, Stream, Favorites, Featured, Ping) 4/6 çözüldü, 2 kısmi
Test 3 23.02 ~03:17 Regresyon testi HLS kırık (master.m3u8 → 404)
Test 4 23.02 ~03:35 HLS route fix + Cache-Control fix 8/8 PASS
Test 5 23.02 ~03:55 Yavaş endpoint'ler (spot, last-played) 4/5 PASS, 1 kısmi (warm cache)

📁 Değişen Dosyalar

Ses Kalite Seçimi (4 dosya)

Modules/Muzibu/database/migrations/tenant/2026_02_22_000001_add_audio_preference_to_users.php

Modules/UserManagement/resources/views/livewire/user-manage-component.blade.php

Modules/UserManagement/App/Http/Livewire/UserManageComponent.php

Modules/Muzibu/App/Http/Controllers/Api/SongStreamController.php

Network Optimizasyon (8 dosya)

Modules/Favorite/App/Services/FavoriteService.php

Modules/Favorite/routes/api.php

Modules/Muzibu/App/Services/MuzibuCacheService.php

Modules/Muzibu/App/Http/Controllers/Api/PlaylistController.php

Modules/Muzibu/App/Http/Controllers/Api/SongController.php

Modules/Muzibu/App/Http/Controllers/Front/CorporateFrontController.php

app/Http/Middleware/FixResponseCacheHeaders.php

routes/tenant.php

HLS Fix (1 dosya)

Modules/Muzibu/Providers/MuzibuServiceProvider.php

Yandex/GTM + Spot (6 dosya)

resources/views/components/marketing/auto-platforms.blade.php

resources/views/layouts/landing/minimal.blade.php

resources/views/layouts/landing/muzibu.blade.php

resources/views/layouts/landing/muzibu-minimal.blade.php

resources/views/themes/muzibu/layouts/app.blade.php

public/themes/muzibu/js/player/features/spot-player.js

Model (1 dosya)

app/Models/User.php

Toplam: ~20 dosya değişikliği

⚠️ Bilinen Kalan Sorunlar

P3

pwa-icon/192.png → 404

PWA manifest ikonu eksik. İkon oluşturulup eklenmeli.

P3

Song 34592 HLS Hatası

Tek şarkıya özel internalException → MP3 fallback. HLS dosyası bozuk olabilir, re-encode gerekebilir.

P4

Blog SPA Alpine Hataları

blogsInfiniteScroll is not defined — SPA router ile blog sayfasına geçişte Alpine data'sı initialize edilmiyor.

Bilgi

thumbmaker Yavaşlığı (~1459ms)

Görsel işleme servisi cold cache'te yavaş. Cloudflare Pro (prod) edge cache ile çözülecek.