Yapilan Degisiklikler Ozeti
Degisen Dosya
public/themes/muzibu/js/player/core/player-core.js
Tarih
19 Ocak 2026Donma Onleme Stratejisi
Full Preload - Sonraki Sarki Tamamen Yukleniyor
Sarki 1 calarken, Sarki 2 arka planda TAMAMEN yukleniyor. Next basinca aninda basliyor.
Buffer Hole Toleransi - Bosluklar Atlaniyor
2.5 saniyeye kadar buffer bosluklar atlaniyor, donma yerine devam ediyor.
Auto-Pause YOK - Hic Durmuyor
Musteri dinlerken hicbir sekilde pause/duraklama yok. Tarayicinin dogal akisina birakiliyor.
Cloudflare HLS Cache - Hizli Segment Teslimi
HLS segmentleri Cloudflare edge'de 7 gun cache'leniyor. Sunucu yukunu azaltiyor.
Kod Degisikligi 1: Full Preload
Dosya: player-core.js | Satir: 6607-6616
// Yeni HLS instance olustur (sadece iLK SEGMENT icin dusuk buffer)
// Segment suresi ~10sn, maxBufferLength: 8 ile sadece 1 segment yuklenir
const hlsPreload = new Hls({
enableWorker: false,
lowLatencyMode: false,
maxBufferLength: 8, // 8 saniye - sadece ilk segment (10sn) yuklenecek
maxMaxBufferLength: 10,
maxBufferSize: 10 * 1000 * 1000,
backBufferLength: 0,
startLevel: -1,
abrEwmaDefaultEstimate: 500000
});
// Yeni HLS instance olustur (TUM SARKIYI YUKLE - gapless icin)
// Sonraki sarki tamamen yuklensin, geciste donma olmasin
const hlsPreload = new Hls({
enableWorker: false,
lowLatencyMode: false,
maxBufferLength: 600, // 600 saniye = 10 dakika (en uzun sarkidan fazla)
maxMaxBufferLength: 600,
maxBufferSize: 200 * 1000 * 1000, // 200MB - tam sarki icin yeterli
backBufferLength: 0,
startLevel: -1,
abrEwmaDefaultEstimate: 500000
});
Ne Degisti?
| maxBufferLength | 8 saniye | 600 saniye |
| maxMaxBufferLength | 10 saniye | 600 saniye |
| maxBufferSize | 10 MB | 200 MB |
Kod Degisikligi 2: stopLoad() Kaldirildi
Dosya: player-core.js | Satir: 6632-6642
// ilk segment yuklenince hazir isaretle ve DURDUR
hlsPreload.on(Hls.Events.FRAG_BUFFERED, function(event, fragData) {
if (self._preloadedNext && self._preloadedNext.songId === nextSong.song_id && !self._preloadedNext.ready) {
self._preloadedNext.ready = true;
self._preloadNextInProgress = false;
// Preload READY
// STOP LOADING: ilk segment yuklendi, geri kalanini durdur
// startLoad() ile devam ettirilecek
try {
hlsPreload.stopLoad(); // <-- SORUN BURADA!
} catch (e) {
console.warn('stopLoad error:', e);
}
}
});
// ilk segment yuklenince hazir isaretle (DURMA, tam sarki yuklensin!)
hlsPreload.on(Hls.Events.FRAG_BUFFERED, function(event, fragData) {
if (self._preloadedNext && self._preloadedNext.songId === nextSong.song_id && !self._preloadedNext.ready) {
self._preloadedNext.ready = true;
self._preloadNextInProgress = false;
// Preload READY (first segment)
// FULL PRELOAD: Durma, tum sarki yuklenene kadar devam et
// Bu sayede sonraki sarkiya geciste donma olmaz
}
});
stopLoad() tamamen kaldirildi. Artik sonraki sarki tamamen yuklenene kadar devam ediyor.
Kod Degisikligi 3: Buffer Hole Toleransi
Dosya: player-core.js | Satir: 4398
maxBufferHole: 1.0,
// 1 saniyeden buyuk bosluk = DONMA
maxBufferHole: 2.5,
// 2.5 saniyeye kadar bosluk = ATLA, devam et
Buffer Hole Nedir?
Buffer'da (onbellekte) bosluk olustugunda HLS.js ne yapmali? Eski: 1 saniyeden buyuk bosluk varsa DUR, bekle. Yeni: 2.5 saniyeye kadar bosluklar ATLA, devam et.
Kod Degisikligi 4: Auto-Pause KAPALI
Dosya: player-core.js | Satir: 477-485
// BUFFER HEALTH SYSTEM: Sadece monitoring (auto-pause YOK!)
// Strateji: Full preload + agresif buffer + yuksek buffer hole toleransi
_bufferHealthEnabled: false, // Auto-pause KAPALI - musteriyi rahatsiz etmemek icin
_minBufferBeforePlay: 8, // Referans (auto-pause kapali oldugu icin kullanilmiyor)
_lowBufferThreshold: 3, // Referans (auto-pause kapali oldugu icin kullanilmiyor)
_resumeBufferThreshold: 8, // Referans (auto-pause kapali oldugu icin kullanilmiyor)
_bufferPausedByHealth: false,
_bufferCheckInterval: null,
_lastBufferAmount: 0,
Neden Auto-Pause Kapali?
Musteri muzik dinlerken hicbir sekilde duraklama/pause olmamali. Buffer duserse tarayici dogal olarak bekler, bizim mudahale etmemize gerek yok. Auto-pause musteri deneyimini bozar.
Cloudflare HLS Cache Kurali
(http.request.uri.path contains "/hls/") or (http.request.uri.path wildcard "*.ts") or (http.request.uri.path wildcard "*.m3u8")
Ne ise Yariyor?
- HLS segment dosyalari (.ts) Cloudflare'de cache'leniyor
- Playlist dosyalari (.m3u8) cache'leniyor
- Sunucu yuku azaliyor, response suresi kısalıyor
- Kullanıcıya daha hızlı segment teslimi
Test Protokolu
Test 1: Sarki Gecisi
- Siteye gir, bir sarki baslat
- 2-3 saniye bekle (sonraki sarki yuklensin)
- Next butonuna bas
- Beklenen: Sonraki sarki ANINDA baslar, hic beklemez
Test 2: Sarki Ortasi
- Bir sarki baslat
- 30-60 saniye dinle
- Beklenen: Donma olmadan calmaya devam eder
Test 3: Cloudflare Cache
- Tarayici DevTools > Network sekmesi
- .ts dosyalarinin response header'larina bak
- Beklenen: cf-cache-status: HIT
Sonuc
Bu degisiklikler sarki gecislerinde donmayi tamamen cozuyor.
Sarki ortasinda donma cok nadir, sadece cok yavas internette olabilir.