Performans & Mimari•7 dk okuma•Web Worker & Virtual DOM

100.000+ Kanallı M3U Listesini Tarayıcıda Açmak: Sanallaştırma ve Bellek Yönetimi

Günümüz IPTV sağlayıcıları 50.000 ile 150.000 arasında canlı kanal, film ve dizi içeren 30 MB – 80 MB boyutunda devasa M3U dosyaları sunmaktadır. Bu dosyaları sıradan bir web oynatıcısına yüklediğinizde tarayıcı sekmesinin çökmesi (OOM Crash / "Aw, Snap!") kaçınılmazdır.

1. Devasa M3U Dosyaları Neden Tarayıcıyı Kilitler?

Bir tarayıcı sekmesinde devasa bir M3U listesi açmaya çalışırken karşılaşılan üç temel mimari darboğaz vardır:

1. Ana İş Parçacığı Kilidi

50 MB'lık bir metin dosyasını JavaScript ana iş parçacığında (Main UI Thread) RegExp ile satır satır bölmek tarayıcıyı 10 ila 30 saniye boyunca tamamen dondurur ve kullanıcı arayüzü yanıt vermez hale gelir.

2. DOM Ağacı Patlaması

100.000 kanalı ekranda <div> veya <li> elemanları olarak üretmeye kalkışmak tarayıcıda 400.000'den fazla DOM düğümü yaratır. Bu durum 1 GB'ı aşan bellek tüketimine ve sekmenin çökmesine yol açar.

3. localStorage Limiti

Tarayıcıların geleneksel localStorage API'si 5 MB depolama sınırına sahiptir. 50 MB'lık bir liste JSON formatına dönüştürüldüğünde QuotaExceededError hatasıyla kaydedilemez.

2. Çözüm 1: Web Worker ile Arka Planda Parçalı Ayrıştırma (Chunked Parsing)

Akipa Web Studio, M3U dosyası veya URL'si yüklendiğinde dosya gövdesini ana iş parçacığından tamamen izole eder ve ayrı bir Web Worker iş parçacığına aktarır.

Worker, dosyayı 5.000'lik kanal bloklarına (chunks) ayırarak ayrıştırır. Her blok tamamlandığındapostMessage ile ana uygulamaya ilerleme yüzdesi (% progress) raporlanır. Böylece kullanıcı ekranda donma veya takılma yaşamadan yükleme durumunu gerçek zamanlı izler.

3. Çözüm 2: DOM Sanallaştırma (Virtual Scrolling)

100.000 kanalın tamamını DOM'a basmak yerine DOM Sanallaştırma (Windowing) tekniği uygulanır. Kullanıcının ekran çözünürlüğüne bağlı olarak (örneğin 1080p bir ekranda) aynı anda yalnızca görünür alandaki 15 ila 25 adet kanal kartı DOM'da oluşturulur.

Kullanıcı listeyi aşağı veya yukarı kaydırdıkça, ekrandan çıkan kanal elemanları anında geri dönüştürülür ve yeni görünen kanalların verileriyle yeniden doldurulur:

MetrikGeleneksel Web OynatıcıAkipa Web Studio Sanallaştırma
Aktif DOM Düğüm Sayısı100.000+ Düğüm< 50 Düğüm (Sabit)
RAM Tüketimi> 1.200 MB (Çökme Riski)~ 45 MB
Kaydırma Performansı2 - 5 FPS (Şiddetli Takılma)60 FPS Akıcı
Arama Gecikmesi2.000 - 5.000 ms< 15 ms (Ters İndeks)

4. Çözüm 3: IndexedDB Tabanlı Yüksek Kapasiteli Depolama

Akipa Studio, 5 MB'lık kısıtlı localStorage yerine tarayıcınızın gigabaytlarca veri depolayabilen yüksek performanslı NoSQL veritabanı IndexedDB motorunu kullanır.

100.000 kanaldan oluşan 60 MB'lık liste IndexedDB üzerinde indekslenmiş koleksiyonlara yazılarak saklanır. Böylece sayfayı yenilediğinizde veya tarayıcıyı kapatıp ertesi gün açtığınızda listenin yeniden indirilmesi veya ayrıştırılması gerekmez; liste mikrosaniyeler içinde hazır hale gelir.

5. Sıkça Sorulan Sorular (SSS)

100.000 kanallı listede kanal aramak ne kadar sürer?

Akipa'nın bellek içi ters indeks (inverted index) arama algoritması sayesinde 100.000 kanal arasında yazdığınız her harf anında (15 milisaniyeden kısa sürede) filtrelenir ve ekranda görüntülenir.

Listemdeki gereksiz kanalları temizleyip dosya boyutunu küçültebilir miyim?

Evet. Akipa'nın dahili M3U Editör aracını kullanarak izlemediğiniz yüzlerce kategoriyi tek tıkla topluca silebilir ve temizlenmiş hafif M3U dosyasını dışa aktarabilirsiniz.

Verilerim sunucuya yüklenmeden nasıl bu kadar hızlı işleniyor?

Akipa, modern tarayıcıların donanım ivmeli JavaScript motorunu (V8/SpiderMonkey) ve Web Workers mimarisini tam kapasiteyle kullanarak tüm hesaplamaları istemci tarafında (Client-Side) gerçekleştirir.

İlgili Araçlar ve Rehberler

🛡️

En utilisant l'application, vous acceptez les Conditions d'utilisation et la Politique de confidentialité. Les identifiants sont stockés sur votre appareil ; les URL de flux ne transitent par le serveur qu'en cas de recours au proxy de secours. Politique de confidentialité