Bahasa Indonesia

Video & subtitle · Pengunduh Media Langsung

Seberapa besar unduhan media sesuai dengan memori browser: aliran, Blob, dan batasan

· Cara kerjanya

unduhan pertunjukan browser

Potongan media terakumulasi ke dalam Blob browser terbatas di samping pengukur memori
Ilustrasi vektor ToolAcre asli

ToolAcre menyatakan batas ukuran adalah memori perangkat Anda, bukan batas unggahan. Posting ini menjelaskan apa artinya pengunduhan langsung: bagaimana isi respons dibaca, di mana byte berada, dan kapan tab browser kehabisan ruang.

File berukuran beberapa gigabyte dan pengunduhan terhenti di tengah jalan — masalah yang disebabkan oleh batas memori pada pengunduhan di sisi browser

Perekaman yang panjang dapat dilanjutkan secara bertahap dan kemudian dihentikan karena penyimpanan di sisi browser memerlukan ruang untuk potongan yang diterima dan Blob yang telah selesai. Persentase yang terhenti saja tidak dapat mendiagnosis penyebabnya: jaringan dapat berhenti sejenak, host dapat menutup koneksi, pembatalan dapat diaktifkan, atau proses dapat mendekati tekanan memori.

ToolAcre membuat satu batas bersifat deterministik. `downloadMedia` defaultnya adalah maksimum 2 GiB dan menolak Panjang Konten yang dinyatakan lebih besar sebelum membaca isi. Jika host menghilangkan atau mengecilkan header tersebut, batas yang sama akan diterapkan lagi saat potongan tiba, sehingga mencegah akumulator yang tidak terikat. Nilai yang dideklarasikan di dekat batas patut diwaspadai karena perakitan Blob, status halaman, dan overhead implementasi dapat memerlukan lebih banyak sumber daya daripada yang disarankan oleh payload respons saja.

Bagaimana isi respons dibaca: Potongan ReadableStream versus satu buffer besar — ​​​​apa yang dilakukan browser saat kemajuannya perlahan

Ambil memperlihatkan isi respons sebagai ReadableStream ketika browser menyediakannya. Implementasinya memperoleh pembaca, menunggu bongkahan, menghitung setiap `Uint8Array`, memperbarui kemajuan, dan menyimpan bongkahan untuk konstruksi Blob akhir. Streaming membuat kemajuan dan pembatalan menjadi nyata; itu tidak membuat penyimpanan menjadi konstan.

Ketika Content-Length adalah nilai terbatas positif, antarmuka dapat menampilkan byte yang diterima dibandingkan totalnya. Tanpanya, tampilan melaporkan byte yang diterima tetapi menolak untuk memberikan persentase. Jika tidak ada isi yang dapat dibaca, kode akan kembali ke `response.blob()` dan melaporkan ukuran akhir saja. Setiap potongan yang dipertahankan memungkinkan perakitan selanjutnya, sedangkan desain streaming disk yang sebenarnya memerlukan API browser yang berbeda, model izin, dan strategi kegagalan yang tidak ada di sini.

Tempat Blob yang telah selesai berada dan mengapa tidak ada janji penyimpanan browser yang aman

Blob yang dikumpulkan adalah objek browser yang mewakili byte yang tidak dapat diubah dengan label MIME. Spesifikasi tidak menjanjikan apakah browser tertentu menyimpan setiap byte pendukung di RAM, menumpahkan beberapa data, atau menduplikasi buffer selama perakitan. Oleh karena itu, panduan artikel harus menghindari klaim lokasi penyimpanan universal.

Apa yang dibuktikan oleh aplikasi adalah bahwa ia mempertahankan referensi potongan hingga streaming selesai, kemudian membuat satu Blob dan tetap menyediakannya untuk tindakan Simpan ke perangkat Anda. Perangkat kerja tersebut bersaing dengan halaman dan tab lainnya, sehingga kondisi perangkat dan browser tetap menjadi kendala praktis di bawah batas atas yang eksplisit. Perbedaan itulah yang menyebabkan dokumentasi menyebutkan tekanan sumber daya daripada menjanjikan pengganda RAM tertentu, ambang batas tumpahan disk, atau teknik alokasi yang bergantung pada browser.

Mengapa tidak ada batas unggahan, tetapi ada penjaga unduhan 2 GiB

Tidak ada file yang diunggah ke ToolAcre dan tidak ada relay yang menerima media. GET berpindah dari browser pengunjung ke host yang disediakan. Hal ini menghilangkan kuota unggahan server, namun hal ini tidak berarti “tidak terbatas”: sumber menerapkan maksimum dua gigibyte dan memberi tahu pekerjaan yang lebih besar untuk menggunakan tautan asli Simpan sebagai sebagai gantinya.

Tuan rumah dapat mengumumkan ukuran yang berlebihan melalui Content-Length, sehingga memungkinkan penolakan lebih awal. Itu juga dapat melakukan streaming tanpa durasi, dalam hal ini ToolAcre menghitung potongan aktual dan berhenti setelah batas terlampaui. Byte parsial tidak ditawarkan sebagai unduhan terpotong setelah kegagalan ini. Pemeriksaan awal dan streaming mencakup header panjang yang benar dan tidak ada, sedangkan header kecil yang tidak akurat ditangkap hanya ketika badan yang diukur melewati batas yang sama.

Contoh praktis: rekaman kuliah panjang di laptop dengan RAM terbatas — apa yang diharapkan dan bagaimana mengetahui tekanan memori dari gangguan jaringan

Bayangkan file kuliah di laptop sudah menjalankan editor dan banyak tab. Tekan pertama Periksa tautan dan bandingkan ukuran yang disebutkan dengan pelindung. Selama Pengunduhan, pembaruan byte yang stabil tanpa total berarti host menghilangkan panjang yang dapat digunakan; baris permintaan yang dibekukan mungkin menunjukkan jeda pengangkutan.

Tekanan memori dapat mempengaruhi tab meskipun permintaan tetap aktif, namun ToolAcre tidak dapat memeriksa sistem operasi dan menyatakan penyebabnya. Alat tugas browser, tampilan memori sistem, dan garis waktu permintaan memberikan bukti pelengkap. Mencoba kembali secara membabi buta mungkin mengulangi permintaan alokasi yang sama. Jika permintaan diakhiri dengan status HTTP, selidiki respons tersebut terlebih dahulu; tekanan memori bukanlah penjelasan default yang berguna untuk setiap transfer besar yang terputus.

Kebiasaan praktis: menutup tab lain dan mengunduh file satu per satu — cara memberikan ruang yang dibutuhkan tab

Tutup tab berat yang tidak terkait sebelum memulai transfer yang mendekati batas, pertahankan satu pekerjaan besar tetap aktif dalam satu waktu, dan hindari menghapus hasilnya hingga tindakan penyimpanan dimulai. Kebiasaan ini mengurangi persaingan namun tidak meningkatkan kode maksimum atau menjamin kesuksesan pada perangkat yang terbatas.

Pemeriksaan terlebih dahulu berguna ketika host menyediakan Panjang Konten, namun nilai yang hilang berarti “tidak diketahui”, bukan “kecil”. Perhatikan penghitung byte mentah dan batalkan jika transfer bukan aset yang diharapkan. Pembatalan membuang sebagian file dan melepaskan kunci pembaca daripada menampilkan byte yang tidak lengkap sebagai sukses. Menyimpan segera juga mengurangi berapa lama Blob siap tetap dapat dijangkau dalam status halaman, meskipun JavaScript tidak dapat menjanjikan kapan tepatnya browser mendapatkan kembali penyimpanan cadangan.

Hal yang tidak tercakup dalam hal ini — melanjutkan download yang rusak, membagi file menjadi beberapa bagian, atau mendownload yang melebihi daya tampung perangkat

Jalur ini tidak mengeluarkan permintaan Rentang, melanjutkan transfer yang terputus, membagi keluaran menjadi beberapa bagian, melakukan streaming langsung ke pegangan file yang dipilih pengguna, atau menjadwalkan antrian. Meskipun respons HEAD melaporkan apakah rentang byte tampaknya didukung, pengunduh tidak mengubah hasil saran tersebut menjadi perilaku melanjutkan.

File di luar penjagaan termasuk dalam unduhan browser asli, klien baris perintah yang diizinkan, atau alur kerja resmi lainnya yang menulis secara progresif tanpa mempertahankan seluruh hasil untuk penyimpanan Blob. Pilihan tersebut adalah tentang arsitektur memori, bukan solusi untuk login, CORS, DRM, atau pembatasan hak. Klien yang dapat dilanjutkan mungkin lebih sesuai untuk koneksi yang tidak dapat diandalkan, tetapi hanya jika sumber file dan otorisasi mengizinkan klien tersebut mengakses sumber daya yang sama.

Kesimpulan: baik penjagaan eksplisit maupun memori perangkat yang tersedia penting

Pernyataan batas yang akurat memiliki dua lapisan: ToolAcre menolak lebih dari 2 GiB secara default, dan transfer yang lebih kecil masih dapat dibatasi oleh sumber daya browser yang tersedia. “Tidak ada batasan unggahan” menggambarkan relai yang tidak ada; ini bukan sinonim untuk ukuran download yang tak terbatas.

Untuk file yang sesuai, pembaca potongan memberikan kemajuan yang sebenarnya, AbortController memberikan pembatalan, dan pembuatan Blob memberikan hasil yang dapat disimpan. Direct Media Downloader menyimpan byte pada rute host-ke-browser langsung sambil mengakui bahwa tab browser adalah ruang kerja yang dibatasi. Kedua batasan tersebut harus direncanakan bersama sebelum transfer dimulai, terutama pada laptop atau perangkat seluler yang dikelola di mana sumber daya yang tersedia dapat berubah dengan cepat.