Düşük Profil Modu (Soft Mode)

Eski Cihazlar & Yavaş İnternet İçin Player Optimizasyonu

Muzibu Player şu an tüm kullanıcılara aynı "ağır" sürümü sunuyor. Bu rapor, eski/yavaş cihazlarda ve kötü internet bağlantılarında donma yaşayan kullanıcılar için "hafif mod" planını detaylı olarak açıklar. Donma sebepleri, gereksiz yükler, geçiş sorunları ve çözüm önerileri tek sayfada.

1. Sorun Nedir?

Player, tüm kullanıcılara aynı ağırlıkta çalışıyor. Güçlü bir bilgisayarda sorunsuz çalışan bu yapı, eski telefonlarda ve yavaş internette donma, takılma ve şarkı geçişlerinde kesinti yaratıyor.

Eski Cihaz Sorunu

2 GB RAM, 2 çekirdek işlemcili telefonlarda player tüm belleği ve işlemci gücünü tüketiyor.

1.5 MB JavaScript — Sayfa açılmadan önce indirilip çalıştırılmalı

120-150 MB RAM — Çalma + preload + debug + HLS havuzu

AES-128 şifre çözme — Her ses parçası CPU'da şifresi çözülüyor

Yavaş İnternet Sorunu

Kötü bağlantıda ses akışı takılıyor ve üstüne bir de otomatik hız testi başlatılarak bağlantı iyice tıkanıyor.

5-8 HTTP isteği — Her şarkı için sunucuya 5-8 ayrı istek

10 MB otomatik hız testi — Takılma olunca tetikleniyor

Preload 20 MB — Sıradaki şarkı önceden indiriliyor

Geçiş Sorunu

Şarkıdan şarkıya geçiş sırasında eski şarkının temizliği + yeni şarkının hazırlanması sırasında donma ve sessizlik yaşanıyor.

9 bileşen temizleniyor — HLS kapatma, timer durdurma, bellek temizleme

3 sunucu isteği — stream URL + key + playlist isteği

HLS başlatma — Manifest parse + key çözme + ilk segment


2. Kısır Döngü — Donma Neden Artarak Devam Ediyor?

Yavaş internette player kendi kendini kötüleştiren bir döngüye giriyor. Takılma → hız testi → daha çok takılma → tekrar hız testi.

1

Şarkı takılıyor (buffer event)

Yavaş internet yüzünden ses akışı duraksıyor. Bu normal bir durum — internet hızı yetmiyordur.

2

buffer-monitor tetikleniyor

BUFFER_THRESHOLD = 1

Sadece 1 takılma yeterli! buffer-monitor.js "internet yavaş mı?" diye hız testini başlatıyor. Eşik çok düşük — tek bir takılmada tetikleniyor.

3

speed-tester 10 MB indirmeye başlıyor

10 MB download!

Zaten yavaş olan internet hattından bir de 10 MB'lık hız testi dosyası indiriliyor. Şarkı ses akışı ile hız testi birbirine rakip oluyor.

4

Şarkı daha çok takılıyor

10 MB indirme bant genişliğini yiyor → ses akışına yeterli bant kalmıyor → şarkı tekrar takılıyor veya tamamen duruyor.

5

30 dakika sonra aynı döngü tekrar başlıyor

COOLDOWN = 30 dk

Cooldown süresi bitince buffer-monitor yine tetiklenir → yine 10 MB → yine takılma. Kullanıcı: "Bu site sürekli donuyor."


3. Donma Yapan Bileşenler — Hangisi Ne Kadar Yük Getiriyor?

Aşağıdaki bileşenler eski/yavaş cihazlarda gereksiz yük oluşturuyor. Her birinin ne kadar kaynak tükettiği ve Soft Mode'da ne yapılacağı gösterilmiştir.

performance-debug.js

180 KB 3.505 satır KALDIR

HEAD'de yükleniyor — sayfa açılmadan önce indirilmesi gerekiyor (render-blocking)

Tükettiği Kaynaklar

  • ~3-4 MB RAM (PerformanceObserver, timeline verileri)
  • CPU: Her 50ms+ işlemi izliyor (longtask observer)
  • 180 KB indirme (yavaş internette ~2-3 sn)
  • Parse + çalıştırma: Eski cihazda 500ms-1sn

Neden Gereksiz?

  • Sadece geliştirici aracı, kullanıcıya gösterilmiyor
  • Freeze analizi, jank tespiti → geliştirme ortamı için
  • Kaldırılması hiçbir özelliği etkilemez
  • Tüm kullanıcılarda kaldırılabilir

speed-tester.js + buffer-monitor.js

690 satır DEVRE DIŞI

İkisi birlikte çalışarak kısır döngüyü oluşturuyor

Tükettiği Kaynaklar

  • Otomatik test: 10 MB + 5 ping
  • Manuel test: 100 MB indirme
  • Bant genişliğini yiyor → şarkı takılıyor
  • 30 dk cooldown sonrası tekrar tetikleniyor

Soft Mode'da Ne Yapılacak?

  • Otomatik tetikleme tamamen kapatılacak
  • Manuel test istenirse sadece 1 MB ile yapılacak
  • buffer-monitor sadece log tutacak, aksiyon almayacak
  • Kısır döngü tamamen kırılacak

Preload Sistemi (Sonraki Şarkıyı Önceden Yükleme)

player-core.js içinde KAPAT

Şarkının %80'inde sıradaki şarkı arka planda yükleniyor

Tükettiği Kaynaklar

  • ~20 MB RAM (yeni HLS instance + segment'ler)
  • Bant genişliği: Stream URL + key + segment indirme
  • CPU: Ek HLS instance yönetimi

Soft Mode'da Ne Yapılacak?

  • Preload tamamen kapatılacak
  • Şarkı bitince sıradaki yüklenmeye başlayacak
  • Geçişte 1-3 sn bekleme olabilir ama donma olmaz
  • 20 MB RAM tasarrufu

HLS Havuzu (HlsPool) — 3 Instance

player-core.js içinde 1'E DÜŞÜR

Aynı anda 3 HLS motoru açık tutabiliyor (aktif + preload + havuz)

Tükettiği Kaynaklar

  • Her instance ~20 MB RAM → 3 adet = ~60 MB
  • Her biri ayrı AES-128 şifre çözüyor

Soft Mode'da Ne Yapılacak?

  • Havuz 1'e düşürülecek (sadece aktif şarkı)
  • ~40 MB RAM tasarrufu

HLS → MP3 Geçişi

En etkili optimizasyon GEÇİŞ YAP

HLS: Parçalı + şifreli + adaptif kalite. MP3: Tek dosya, basit, hafif.

HLS (Şu Anki Durum)

  • Manifest indir → key indir → segment'leri parça parça indir
  • Her segment'in şifresi CPU'da çözülüyor
  • Her şarkı için 5-8 HTTP isteği
  • HLS.js kütüphanesi: 100 KB + ~20 MB RAM
  • CPU yoğun (şifre çözme + adaptif kalite hesaplama)

MP3 (Soft Mode)

  • Tek dosya — doğrudan indirip çal
  • Şifre çözme yok → CPU yükü ~%80 azalır
  • Sadece 1-2 HTTP isteği (stream URL + dosya)
  • Howler.js: 50 KB + ~5 MB RAM
  • Anında çalmaya başlar (progressive download)

SPA Router Sayfa Önbelleği — 50 Sayfa

spa-router.js 10'A DÜŞÜR

Ziyaret edilen sayfalar bellekte tutuluyor, tekrar ziyarette yeniden indirilmiyor

50 Sayfanın Maliyeti

  • Her sayfa ortalama 200-500 KB DOM → toplamda ~10-25 MB
  • Alpine.js tree cleanup her sayfada çalışıyor

Soft Mode'da

  • Cache 10 sayfaya düşürülecek
  • ~15 MB RAM tasarrufu

4. Şarkı Geçişi Sorunu & Çözümü

Şarkıdan şarkıya geçiş, player'ın en kritik anıdır. Eski şarkının temizlenmesi, yeni şarkının yüklenmesi, güvenlik kontrolü — tüm bunlar aynı anda olurken kullanıcı donma ve sessizlik yaşıyor.

Normal Mod — Geçiş Süreci

Eski cihazda 3-8 sn donma

0ms 9 bileşeni temizle (HLS kapatma, timer durdurma...)
50ms Sunucuya stream URL isteği gönder
400ms Giriş + Premium kontrolü (taze DB sorgusu)
500ms İmzalı URL al → HLS manifest indir
700ms Şifreleme anahtarını indir
900ms İlk segment'i indir + şifresini çöz
1.2sn Yeni HLS instance oluştur + oynatma başla

İyi internette: ~1.2 sn sessizlik

Yavaş internette: 3-8 sn donma + sessizlik

Soft Mode — Geçiş Süreci

Eski cihazda 0.5-2 sn bekleme

0ms Eski şarkıyı durdur (basit Howler.stop())
10ms Sunucuya MP3 stream URL isteği gönder
300ms İmzalı MP3 URL al
500ms Howler.js ile MP3 çalmaya başla (progressive)
Manifest indirme gerekmiyor
Şifreleme anahtarı indirme gerekmiyor
AES-128 şifre çözme gerekmiyor

İyi internette: ~0.5 sn (neredeyse anında)

Yavaş internette: 1-2 sn (kabul edilebilir)

Çalma Sırasında Donma — Neden Oluyor, Nasıl Önlenir?

Şu An Donma Sebepleri

HLS segment şifre çözme

Her 2-10 sn'de bir yeni segment → CPU'da AES-128 çöz → 2 çekirdekte jank

Buffer health check (500 ms)

Her yarım saniyede ses akışı sağlık kontrolü → eski CPU'da yük

Performance observer

Debug paneli her 50ms+ işlemi kaydediyor → çözmeye çalışırken donduruyor

Otomatik hız testi

Takılma olunca 10 MB indirme → bant genişliği çalınıyor

Soft Mode'da Çözüm

MP3 progressive download

Şifre çözme yok → CPU boşta → donma yok

Buffer health check kapalı

MP3'te gerekli değil, Howler.js kendi yönetiyor

Debug paneli kapalı

180 KB + 3-4 MB RAM tamamen tasarruf

Hız testi kapalı

Bant genişliği sadece şarkıya ayrılır


5. Normal Mod vs Soft Mode — Tam Karşılaştırma

Özellik Normal Mod Soft Mode Tasarruf
Ses formatı HLS (şifreli, parçalı) MP3 (tek dosya, basit) CPU %80 azalır
Toplam JS boyutu ~1.5 MB ~1.1 MB ~400 KB
HEAD render-blocking JS 791 KB ~611 KB 180 KB
RAM kullanımı (çalma) 120-150 MB 30-50 MB ~100 MB
HLS instance sayısı 3 (havuz) 0 (MP3 kullanır) ~60 MB RAM
Preload (önceden yükleme) Açık (~20 MB) Kapalı ~20 MB RAM
Debug paneli Açık (180 KB + 4 MB RAM) Kapalı 180 KB + 4 MB
Otomatik hız testi Açık (10 MB indirme) Kapalı 10 MB bant genişliği
Buffer monitor Açık (eşik: 1) Kapalı Kısır döngü kırılır
SPA sayfa cache 50 sayfa 10 sayfa ~15 MB RAM
Şarkı geçiş süresi 1.2 - 8 sn 0.5 - 2 sn %60-75 hızlanma
HTTP isteği (şarkı başı) 5-8 istek 1-2 istek %75 azalma
Ses kalitesi Adaptif (64-320 kbps) Sabit (128 kbps) Kalite farkı minimal
~100 MB
RAM Tasarrufu
%80
CPU Yükü Azalma
%75
Daha Hızlı Geçiş
~400 KB
JS Boyutu Azalma

6. Soft Mode Nasıl Çalışacak?

Soft Mode'un devreye girişi iki yoldan olacak: otomatik tespit veya admin panelinden manuel atama.

Otomatik Tespit

Cihaz kendisi karar verir

device-profiler.js zaten cihaz bilgilerini topluyor. Aşağıdaki eşik değerlerden herhangi birini karşılayan cihaz otomatik olarak Soft Mode'a geçer:

RAM 4 GB veya altı
CPU çekirdek 4 veya altı
Bağlantı hızı connection.effectiveType = "2g" veya "slow-2g"
Veri tasarrufu navigator.connection.saveData = true

Admin Panelden Manuel

Yönetici kullanıcı bazlı karar verir

Admin panelde her kullanıcı için "Player Modu" seçeneği olacak. Yönetici istediği kullanıcıyı Soft Mode'a alabilir:

Kullanıcı Ayarları

Otomatik — Cihaz profiline göre karar verilir (varsayılan)
Normal Mod — Her zaman HLS (zorla)
Soft Mode — Her zaman MP3 (zorla)

Kalite Ayarı

Düşük: 64 kbps — Çok yavaş internet
Orta: 128 kbps — Standart (önerilen)
Yüksek: 256 kbps — İyi internet

Karar Akışı — Kullanıcı Şarkı Çaldığında

Admin ayarına bak: Kullanıcıya özel mod atanmış mı?

Atanmışsa: O modu kullan (Normal veya Soft) → Bitti.

"Otomatik" ise: Cihaz profilini kontrol et (RAM, CPU, bağlantı hızı).

Eşik altındaysa: Soft Mode (MP3 + optimizasyonlar). Üstündeyse: Normal Mod (HLS).

Şarkıyı çal — Seçilen moda göre HLS veya MP3 ile oynat.