Beranda » bagaimana » Mengapa Browser Web Saya Terkadang Gagal Menampilkan Waktu Unduhan yang tersisa?

    Mengapa Browser Web Saya Terkadang Gagal Menampilkan Waktu Unduhan yang tersisa?

    Terkadang meteran unduhan yang setia di browser Anda (atau aplikasi lain) hanya mengacungkan tangan dan menyerah untuk menampilkan sisa waktu unduhan. Mengapa kadang-kadang memaku waktu download yang diproyeksikan dan kadang-kadang gagal melaporkan semuanya bersama-sama?

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Pertanyaan

    Pembaca SuperUser, Coldblackice, ingin tahu mengapa perambannya tidak selalu menodai kotoran:

    Kadang-kadang, saat mengunduh file di browser web, progres pengunduhan tidak "tahu" ukuran total file, atau seberapa jauh dalam pengunduhannya - ini hanya menunjukkan kecepatan pengunduhannya, dengan total sebagai "Tidak Diketahui".

    Mengapa peramban tidak mengetahui ukuran akhir beberapa file? Di mana ia mendapatkan informasi ini di tempat pertama?

    Memang dimana?

    Jawaban

    Kontributor SuperUser, Gronostaj menawarkan wawasan berikut:

    Untuk meminta dokumen dari server web, browser menggunakan protokol HTTP. Anda mungkin tahu nama itu dari bilah alamat Anda (mungkin sekarang disembunyikan, tetapi ketika Anda mengklik bilah alamat, salin URL dan tempel di beberapa editor teks, Anda akan melihat http: // pada awalnya). Ini adalah protokol berbasis teks yang sederhana dan berfungsi seperti ini:

    Pertama, browser Anda terhubung ke server situs web dan mengirimkan URL dokumen yang ingin diunduh (halaman web juga dokumen) dan beberapa detail tentang browser itu sendiri (User-Agent dll). Misalnya, memuat halaman utama di situs SuperUser, http://superuser.com/, browser saya mengirim permintaan yang terlihat seperti ini:

    GET / HTTP / 1.1 Host: superuser.com Koneksi: tetap-hidup Terima: teks / html, aplikasi / xhtml + xml, aplikasi / xml; q = 0,9, * / *; q = 0,8 User-Agent: Mozilla / 5.0 ( Windows NT 6.1; WOW64) Terima-Pengkodean: gzip, deflate, sdch Bahasa-Terima: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Cookie: [dihapus untuk keamanan] DNT : 1 Jika-Dimodifikasi-Sejak: Sel, 09 Jul 2013 07:14:17 GMT 

    Baris pertama menentukan dokumen mana yang harus dikembalikan oleh server. Baris lain disebut header; mereka terlihat seperti ini:

    Nama tajuk: Nilai tajuk 

    Baris-baris ini mengirimkan informasi tambahan yang membantu server memutuskan apa yang harus dilakukan.

    Jika semuanya baik-baik saja, server akan merespons dengan mengirimkan dokumen yang diminta. Respons dimulai dengan pesan status, diikuti oleh beberapa tajuk (dengan perincian tentang dokumen) dan akhirnya, jika semuanya baik-baik, konten dokumen. Seperti inilah balasan server SuperUser untuk permintaan saya:

    HTTP / 1.1 200 OK Kontrol-Cache: publik, usia maks = 60 Jenis-Konten: teks / html; charset = utf-8 Kedaluwarsa: Sel, 09 Jul 2013 07:27:20 GMT Terakhir Dimodifikasi: Sel, 09 Jul 2013 07:26:20 GMT Bervariasi: * Pilihan Bingkai-X: SAMAORIGIN Tanggal: Sel, 09 Jul 2013 07:26:19 GMT-Panjang Konten: 139672 [... snip ...]  

    Setelah baris terakhir, server SuperUser menutup koneksi.

    Baris pertama (HTTP / 1.1 200 OK) berisi kode respons, dalam hal ini 200 OK. Ini berarti bahwa server akan mengembalikan dokumen, seperti yang diminta. Ketika server tidak berhasil melakukannya, kode akan menjadi sesuatu yang lain: Anda mungkin telah melihatnya 404 tidak ditemukan, dan 403 Dilarang cukup umum juga. Lalu header mengikuti.

    Ketika browser menemukan baris kosong dalam respons, ia tahu bahwa segala sesuatu yang melewati baris itu adalah konten dokumen yang diminta. Jadi dalam hal ini  adalah baris pertama dari kode beranda SuperUser. Jika saya meminta dokumen untuk diunduh, mungkin ada beberapa karakter omong kosong, karena sebagian besar format dokumen tidak dapat dibaca tanpa pemrosesan sebelumnya.

    Kembali ke tajuk. Yang paling menarik bagi kami adalah yang terakhir, Panjang Konten. Ini memberitahu browser berapa banyak byte data yang diharapkan setelah baris kosong, jadi pada dasarnya ukuran dokumen dinyatakan dalam byte. Header ini tidak wajib dan mungkin dihilangkan oleh server. Terkadang ukuran dokumen tidak dapat diprediksi (misalnya saat dokumen dihasilkan dengan cepat), terkadang programmer malas tidak memasukkannya (cukup umum di situs pengunduhan driver), terkadang situs web dibuat oleh pemula yang tidak tahu dari header seperti itu.

    Pokoknya, apa pun alasannya, tajuknya bisa hilang. Dalam hal ini browser tidak tahu berapa banyak data yang akan dikirim oleh server, dan dengan demikian menampilkan ukuran dokumen sebagai tidak diketahui, menunggu server untuk menutup koneksi. Dan itulah alasan ukuran dokumen tidak diketahui.


    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.