14Sep
Terkadang download setia meter kemajuan pada browser Anda( atau aplikasi lainnya) hanya melempar tangannya ke udara dan menyerah saat menampilkan waktu unduh yang tersisa. Mengapa kadang kala memaku waktu download yang diproyeksikan dan terkadang gagal melaporkan semuanya?
Pertanyaan Hari Ini &Sesi jawaban datang kepada kami atas izin SuperUser - subdivisi dari Stack Exchange, pengelompokan berbasis komunitas dari Q & A situs web.
Pertanyaan
Pembaca superuser Coldblackice ingin tahu mengapa perambannya tidak selalu menyajikan kotoran:
Terkadang, saat mendownload file di browser web, perkembangan unduhan tidak "mengetahui" ukuran total file, atauseberapa jauh sepanjang download - ini hanya menunjukkan kecepatan download, dengan total sebagai "Unknown".
Mengapa browser tidak mengetahui ukuran akhir beberapa file? Darimana informasi ini pertama kali ada?
Dimana memang?
Jawaban
Kontributor SuperUser Gronostaj menawarkan wawasan berikut:
Untuk meminta dokumen dari server web, browser menggunakan protokol HTTP.Anda mungkin tahu nama itu dari address bar Anda( mungkin tersembunyi sekarang, tapi ketika Anda mengklik bilah alamat, salin URL dan tempelkan di beberapa editor teks, Anda akan melihat http: // di awal).Ini adalah protokol berbasis teks sederhana dan bekerja seperti ini:
Pertama, browser Anda terhubung ke server situs web dan mengirimkan URL dokumen yang ingin diunduh( juga halaman web adalah dokumen) dan beberapa rincian tentang browser itu sendiri( User-Agent dll).Misalnya, untuk memuat halaman utama di situs SuperUser, http: //superuser.com/, browser saya mengirimkan permintaan yang terlihat seperti ini:
GET / HTTP / 1.1 Host: superuser.com Sambungan: tetap-hidup Terima: teks / html, aplikasi/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Accept-Encoding: gzip, deflate, sdch Accept-Language: pl-PL, q = 0,8, en-US; q = 0,6, en; q = 0,4 Cookie: [dihapus untuk keamanan] DNT: 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMTYang pertamaline menentukan dokumen mana yang harus dikembalikan server. Baris lainnya disebut header;mereka terlihat seperti ini:
Header name: Header valueBaris ini mengirimkan informasi tambahan yang membantu server memutuskan apa yang harus dilakukan.
Jika semuanya baik, server akan merespon dengan mengirimkan dokumen yang diminta. Respon dimulai dengan pesan status, diikuti oleh beberapa header( dengan rincian tentang dokumen) dan akhirnya, jika semuanya baik-baik saja, isi dokumennya. Ini adalah jawaban dari server SuperUser untuk permintaan saya:
HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Content-Type: text / html;charset = utf-8 Berakhir: Sel, 09 Jul 2013 07:27:20 GMT Terakhir-Diubah: Sel, 09 Jul 2013 07:26:20 GMT Variasi: * X-Frame-Pilihan: SAMEORIGIN Tanggal: Sel, 09 Jul 201307:26:19 GMT Isi-Length: 139672 & lt; DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;Setelah baris terakhir, server SuperUser menutup koneksi.
Baris pertama( HTTP / 1.1 200 OK) berisi kode tanggapan, dalam kasus ini 200 OK.Artinya server akan mengembalikan dokumen sesuai permintaan. Ketika server tidak berhasil melakukannya, kodenya akan menjadi sesuatu yang lain: Anda mungkin pernah melihat 404 Not Found, dan 403 Forbidden juga sangat umum. Lalu tajuk berikut.
Ketika browser menemukan baris kosong dalam tanggapannya, ia mengetahui bahwa segala sesuatu yang melewati garis itu adalah isi dari dokumen yang dimintanya. Jadi dalam kasus ini & lt;! DOCTYPE html & gt;adalah baris pertama kode homepage SuperUser. Jika saya meminta dokumen untuk diunduh, mungkin itu adalah beberapa karakter omong kosong, karena kebanyakan format dokumen tidak terbaca tanpa pemrosesan sebelumnya.
Kembali ke header. Yang paling menarik bagi kita adalah yang terakhir, Content-Length. Ini menginformasikan browser berapa byte data yang harus diharapkan setelah baris kosong, jadi pada dasarnya itu adalah ukuran dokumen yang dinyatakan dalam byte. Header ini tidak wajib dan mungkin dihilangkan oleh server. Terkadang ukuran dokumen tidak dapat diprediksi( misalnya saat dokumen dibuat dengan cepat), terkadang programmer malas tidak memasukkannya( cukup umum di situs download driver), terkadang situs web dibuat oleh pemula yang tidak tahuseperti header
Bagaimanapun, apapun alasannya, headernya bisa hilang. Dalam hal ini browser tidak mengetahui berapa banyak data server yang akan dikirim, dan dengan demikian menampilkan ukuran dokumen sebagai yang tidak diketahui , menunggu server menutup koneksi. Dan itulah alasan ukuran dokumen yang tidak diketahui.
Punya sesuatu untuk ditambahkan ke penjelasannya? Terdengar dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange tech-savvy lainnya? Simak thread diskusi selengkapnya disini.