Pembangunan bahagian hadapan selalunya melibatkan muat naik fail (imej, video, audio). Walau bagaimanapun, fail besar memberikan cabaran: masa muat naik yang berpanjangan, memberi kesan kepada pengalaman pengguna; ketegangan pelayan yang berlebihan dan kehabisan sumber; kegagalan muat naik kerana rangkaian yang tidak stabil, memerlukan percubaan semula dan lebar jalur yang sia-sia; dan peningkatan penggunaan memori pelayar, menjejaskan prestasi dan kestabilan keseluruhan. Mengoptimumkan muat naik fail yang besar adalah penting untuk mengurangkan isu ini.
Aplikasi moden memerlukan pengendalian yang cekap bagi fail yang semakin besar: media resolusi tinggi pada platform sosial, tugasan besar dalam pendidikan dan fail projek yang besar dalam tetapan perusahaan. Kaedah tradisional, menghantar keseluruhan fail dalam satu permintaan, adalah tidak mencukupi.
Muat naik tradisional mengalami:
Oleh itu, pengoptimuman adalah penting.
Pendekatan utama untuk mengoptimumkan muat naik fail besar termasuk:
Pecahkan fail besar kepada bahagian yang lebih kecil, hantar setiap satu sebagai permintaan individu. Ini mengurangkan data setiap permintaan, mempercepatkan muat naik, mengurangkan beban pelayan dan membolehkan muat naik boleh disambung semula.
<code class="language-javascript">function sliceFile(file, chunkSize) { const fileSize = file.size; const chunks = Math.ceil(fileSize / chunkSize); const slices = Array.from({ length: chunks }, (_, index) => { const start = index * chunkSize; const end = start + chunkSize; return file.slice(start, end); }); return slices; }</code>
Hantar berbilang bahagian secara serentak untuk memaksimumkan lebar jalur rangkaian dan penggunaan pelayan, meningkatkan pengalaman pengguna.
<code class="language-javascript">async function uploadChunks(fileChunks) { const uploadPromises = fileChunks.map((chunk) => fetch('/upload', { method: 'POST', body: chunk }) ); const responses = await Promise.all(uploadPromises); return responses; }</code>
Mampatkan setiap bahagian sebelum penghantaran untuk mengurangkan lagi saiz data dan meningkatkan kecekapan pemindahan.
<code class="language-javascript">async function compressChunk(chunk) { const compressedChunk = await new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (event) => { const result = pako.deflate(event.target.result); resolve(result); }; reader.onerror = (event) => reject(event.error); reader.readAsArrayBuffer(chunk); }); return compressedChunk; }</code>
Sahkan setiap bahagian sebelum atau selepas pemindahan untuk memastikan integriti data, mengelakkan pemindahan data yang tidak perlu atau cacat.
<code class="language-javascript">async function verifyChunk(chunk) { const hash = await calculateHash(chunk); const response = await fetch(`/verify?hash=${hash}`); const result = await response.json(); return result; }</code>
Benarkan muat naik diteruskan dari titik gangguan, menjimatkan masa dan meningkatkan kelajuan muat naik.
<code class="language-javascript">async function resumeUpload(file, resumeByte) { const blob = file.slice(resumeByte); const formData = new FormData(); formData.append('file', blob); const response = await fetch('/upload', { method: 'POST', body: formData }); const result = await response.json(); return result; }</code>
Pramuat naik pengiraan cincang dan perbandingan sisi pelayan untuk mengenal pasti fail yang sama, mengelakkan muat naik berlebihan.
<code class="language-javascript">function sliceFile(file, chunkSize) { const fileSize = file.size; const chunks = Math.ceil(fileSize / chunkSize); const slices = Array.from({ length: chunks }, (_, index) => { const start = index * chunkSize; const end = start + chunkSize; return file.slice(start, end); }); return slices; }</code>
Artikel ini menyerlahkan keperluan untuk pengoptimuman muat naik fail yang besar dan membentangkan strategi utama. Contoh kod yang disediakan menggambarkan pelaksanaan praktikal, membolehkan pembaca mengurus muat naik fail besar dengan cekap.
Leapcell ialah platform tanpa pelayan generasi akan datang untuk pengehosan web, tugas tak segerak dan Redis, menawarkan:
Terokai Dokumentasi!
Ikuti kami di X: @LeapcellHQ
Baca lebih lanjut di blog kami
Atas ialah kandungan terperinci Cara Mengendalikan Muat Naik Fail Besar (Tanpa Hilang Fikiran Anda). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!