Buyuk Dosya Sunumu: Kismi Indirme ve Devam Ettirme

Buyuk dosyalar nasil sunulur? Kismi indirme destegi, devam ettirme ve bellek tuketmeden dosya gonderme. Büyük Dosya Sunumu: Kısmi İndirme ve Devam Ettirme…

Buyuk Dosya Sunumu: Kismi Indirme ve Devam Ettirme
İçindekiler
  1. Büyük Dosya Sunumu: Kısmi İndirme ve Devam Ettirme
  2. Aralık İstekleri
  3. Statik Dosyalar Hazırdır
  4. Sunumu Web Sunucusuna Devretmek
  5. Dosya Konumu
  6. Bellek Tüketimi
  7. Hız Sınırlama
  8. İndirme Bütünlüğü
  9. Ne Zaman Dağıtım Ağı?
  10. İzlenmesi Gerekenler
  11. Sonuç
  12. Sıkça Sorulan Sorular (SSS)
  13. Kopan indirme neden baştan başlıyor?
  14. Erişim kontrolü gerekiyorsa ne yapmalıyım?
  15. Büyük dosyada betik neden çöküyor?
  16. İndirme hızını sınırlamalı mıyım?

Buyuk Dosya Sunumu: Kismi Indirme ve Devam Ettirme

Büyük Dosya Sunumu: Kısmi İndirme ve Devam Ettirme

Kullanıcı 2 GB'lık dosyayı indirirken bağlantısı koptu. Baştan başlaması gerekiyor. Üç kez denedi, üçünde de kesildi ve vazgeçti — oysa sunucunuz kaldığı yerden devam etmeye izin verebilirdi.

Bu yazı, büyük dosyaları doğru sunmayı ele alıyor.

Aralık İstekleri

Protokol, dosyanın bir kısmını istemeye izin verir:

  • İstemci belirli bir bayt aralığı ister.
  • Sunucu yalnızca o kısmı gönderir.
  • Kısmi içerik durum kodu döner.
  • Kaldığı yerden devam edilir.

Dördüncü madde kullanıcı deneyimini tamamen değiştirir: aralık desteği olan bir sunucuda kopan indirme baştan başlamaz — istemci indirdiği son bayttan itibaren devam eder ve büyük dosyalar mobil bağlantıda bile tamamlanabilir.

Destek yoksa her kopma tüm ilerlemeyi siler.

Üçüncü madde ise normal yanıttan farklıdır ve istemciye kısmi veri aldığını bildirir.

Statik Dosyalar Hazırdır

Sunum yöntemi Aralık desteği
Web sunucusu doğrudan Otomatik var
Uygulama üzerinden Elle eklenmeli
Nesne depolama Genellikle var

İkinci satır çoğu kurulumdaki eksikliği açıklar: dosyayı bir PHP betiği üzerinden sunuyorsanız aralık desteği kendiliğinden gelmez — betik her istekte dosyayı baştan okur ve kopan indirme baştan başlar.

Bu, erişim kontrolü gerektiren dosyalarda kaçınılmaz görünür ama değildir.

Çözüm, yetkilendirmeyi uygulamada yapıp dosya sunumunu web sunucusuna devretmektir.

Bu yöntem hem aralık desteğini hem performansı birlikte kazandırır.

Sunumu Web Sunucusuna Devretmek

  1. Uygulama isteği alır.
  2. Yetkiyi kontrol eder.
  3. Özel bir başlıkla dosya yolunu bildirir.
  4. Web sunucusu dosyayı gönderir.

Dördüncü adım tüm avantajı getirir: dosyayı web sunucusu gönderdiğinde aralık istekleri, önbellek başlıkları ve verimli aktarım otomatik devreye girer — üstelik PHP süreci hemen serbest kalır ve başka isteklere bakabilir.

Uygulama üzerinden sunumda ise süreç, indirme bitene kadar meşgul kalır.

2 GB'lık bir dosyayı yavaş bir bağlantıya sunan süreç, dakikalarca bloke olur.

Bu, birkaç eşzamanlı indirmenin tüm işçi süreçleri tüketmesine yol açar.

Dosya Konumu

  • Web kökü dışında saklayın.
  • Doğrudan erişimi engelleyin.
  • Yalnızca yetkilendirilmiş yolla sunun.

Bu üçlü birlikte çalışır ve devretme yöntemiyle uyumludur: dosyalar web kökü dışında dursa bile web sunucusu iç bir yönlendirmeyle onlara erişebilir — dışarıdan doğrudan çağrılamaz ama uygulama izin verdiğinde sunulur.

Bu yapılandırma, güvenlik ile performansı birlikte sağlar.

İkinci madde ise bir yapılandırma detayıdır ve ilgili konumun dışarıya kapatılmasını gerektirir.

Bellek Tüketimi

Yöntem Bellek kullanımı
Dosyayı tümüyle okumak Dosya boyutu kadar
Parça parça okumak Sabit ve düşük
Web sunucusuna devretmek Neredeyse sıfır

Birinci satır en yaygın hatadır ve doğrudan çökmeye yol açar: 2 GB'lık bir dosyayı tümüyle belleğe okumaya çalışan bir betik, bellek sınırını aşar ve istek başarısız olur — üstelik hata mesajı dosya boyutuyla ilgili değildir.

Bu, küçük dosyalarla test edilen kodda hiç fark edilmez.

İkinci satır ise bellek sorununu çözer ama süreç meşguliyeti devam eder.

Üçüncü satır ise her iki sorunu birden ortadan kaldırır ve tercih edilmelidir.

Hız Sınırlama

  1. Bant genişliği tüketimini kontrol edin.
  2. Eşzamanlı indirme sayısını sınırlayın.
  3. Kullanıcı başına kota tanımlayın.

Birinci madde diğer ziyaretçileri korur: tek bir kullanıcının büyük bir dosyayı tam hızda indirmesi, sunucunun tüm bant genişliğini tüketip normal sayfaların açılmasını yavaşlatabilir — indirme hızını sınırlamak sitenin geri kalanını korur.

Bu sınır, kullanıcı için fark edilir bir yavaşlama yaratmadan uygulanabilir.

İkinci madde ise kötüye kullanımı önler. Aynı kullanıcının onlarca eşzamanlı indirme başlatması engellenmelidir.

Üçüncü madde ise ücretli içerik sunanlar için gereklidir ve paylaşımı sınırlar.

İndirme Bütünlüğü

  • Dosya boyutunu başlıkta bildirin.
  • Sağlama değeri sunun.
  • İstemci doğrulayabilsin.

Birinci madde ilerleme göstergesi için zorunludur: içerik uzunluğu bildirilmezse tarayıcı indirmenin ne kadar süreceğini gösteremez ve kullanıcı yüzde işareti olmayan belirsiz bir bekleme yaşar.

Bu, büyük dosyalarda vazgeçme oranını artırır.

İkinci madde ise özellikle yazılım dağıtımında önemlidir. Kullanıcı indirdiği dosyanın bozulmadığını doğrulayabilir.

Bu değer, indirme sayfasında görünür biçimde yayınlanmalıdır.

Ne Zaman Dağıtım Ağı?

Durum Öneri
Az sayıda büyük dosya Dağıtım ağı çok uygun
Uluslararası kullanıcı Gerekli
Kişiye özel dosyalar İmzalı adres gerekir
Düşük hacim Gerekmez

Üçüncü satır erişim kontrolünü korumanın yolunu gösterir: süreli imzalı adresler sayesinde dosya dağıtım ağından sunulurken yetkilendirme sizin uygulamanızda kalır — kullanıcı yalnızca kendisi için üretilmiş ve süresi sınırlı bir bağlantı alır.

Bu, hem performans hem güvenlik sağlar.

Bağlantı paylaşılsa bile süresi dolduğunda çalışmaz.

Birinci satır ise sunucu yükünü ve bant genişliği maliyetini belirgin biçimde düşürür.

İzlenmesi Gerekenler

  • Tamamlanma oranı.
  • Ortalama indirme süresi.
  • Bant genişliği tüketimi.

Birinci madde en değerli göstergedir: başlatılan indirmelerin ne kadarının tamamlandığını ölçmek, aralık desteği veya hız sorunu olup olmadığını doğrudan gösterir — düşük tamamlanma oranı teknik bir sorunun işaretidir.

Bu oran, ürün satan siteler için doğrudan gelir etkisi taşır.

Üçüncü madde ise maliyet tarafıdır ve sürpriz faturaları önler.

Büyük dosya sunumu bant genişliği ve disk planlaması gerektirir; VDS sunucu paket seçenekleri arasında trafik kotası bu ihtiyaca göre değerlendirilmelidir.

Sonuç

Büyük dosya sunumunda iki hata birlikte yaşanır: dosyayı uygulama üzerinden sunmak hem aralık desteğini kaybettirir hem süreci indirme bitene kadar meşgul eder. Doğru desen, yetkilendirmeyi uygulamada yapıp sunumu web sunucusuna devretmektir — aralık istekleri, önbellek ve verimli aktarım otomatik gelir, süreç hemen serbest kalır. Ve dosyayı asla tümüyle belleğe okumayın; hata mesajı dosya boyutuyla ilgili bile olmaz.

Sıkça Sorulan Sorular (SSS)

Kopan indirme neden baştan başlıyor?

Sunucunuz aralık isteklerini desteklemiyor. Dosyayı bir betik üzerinden sunuyorsanız bu destek kendiliğinden gelmez — betik her istekte dosyayı baştan okur. Web sunucusu doğrudan sunduğunda ise aralık desteği otomatik devrededir.

Erişim kontrolü gerekiyorsa ne yapmalıyım?

Yetkilendirmeyi uygulamada yapıp sunumu web sunucusuna devredin: uygulama yetkiyi kontrol eder ve özel bir başlıkla dosya yolunu bildirir, dosyayı web sunucusu gönderir. Böylece aralık desteği ve verimli aktarım gelir, üstelik süreç hemen serbest kalır.

Büyük dosyada betik neden çöküyor?

Muhtemelen dosyayı tümüyle belleğe okuyorsunuz ve bellek sınırını aşıyorsunuz. Hata mesajı dosya boyutuyla ilgili görünmez, bu yüzden teşhis zorlaşır. Küçük dosyalarla test edilen kodda bu hiç fark edilmez.

İndirme hızını sınırlamalı mıyım?

Sınırlamak sitenin geri kalanını korur. Tek bir kullanıcının büyük dosyayı tam hızda indirmesi sunucunun tüm bant genişliğini tüketip normal sayfaları yavaşlatabilir. Bu sınır, kullanıcı için fark edilir bir yavaşlama yaratmadan uygulanabilir.