Apa yang dilakukan oleh pengurus muat turun yang tidak dilakukan oleh pelayar web
Fail empat gigabait, sembilan puluh peratus siap, kemudian panggilan telefon — atau sekadar skrin dikunci — dan ia hilang. Ini adalah aduan paling biasa tentang muat turun pada iOS, dan ia bukan pepijat. Ia adalah sistem pengendalian melakukan tepat apa yang direka untuknya, dan sebab kenapa satu kelas aplikasi berasingan wujud.
- 30s Kira-kira berapa lama aplikasi yang digantung terus berjalan sebelum iOS menghentikannya
- 206 Status HTTP yang menjadikan sambung semula mungkin berlaku
- 1 byte Berapa banyak pemindahan yang disambung semula dengan betul dimuat turun semula
Kenapa pemindahan berhenti apabila anda menukar aplikasi
iOS tidak membenarkan aplikasi terus berfungsi hanya kerana ia mahu. Apabila anda keluar daripada aplikasi, ia digantung dalam beberapa saat, dan aplikasi yang digantung tiada masa CPU, tiada soket rangkaian dan tiada cara untuk menyedari ia telah dihentikan. Segala yang dipegangnya dalam memori masih ada, tetapi beku — dan jika sistem memerlukan memori itu, aplikasi ditamatkan terus tanpa diberitahu.
Muat turun yang berjalan pada sambungan biasa dalam aplikasi itu sendiri oleh itu berakhir pada gerak isyarat home. Sesetengah aplikasi menyembunyikan ini dengan meminta beberapa saat tambahan masa latar belakang, sebab itulah muat turun kadangkala bertahan apabila dilatarbelakangkan tepat selama masa yang anda ambil untuk menyedari ia sebenarnya tidak bertahan.
Jawapan yang betul adalah berbeza dari segi jenisnya. iOS menyediakan perkhidmatan pemindahan latar belakang: anda menyerahkan sistem senarai URL dan destinasi, dan sistem itu sendiri yang memuat turun, dalam prosesnya sendiri, mengikut jadualnya sendiri. Aplikasi anda boleh digantung, ditamatkan, atau langsung tidak berjalan — pemindahan diteruskan, dan aplikasi dilancarkan semula di latar belakang apabila ada sesuatu untuk dilaporkan. Ini adalah mekanisme di sebalik setiap muat turun yang bertahan skrin dikunci, dan menggunakannya adalah keputusan reka bentuk yang dibuat oleh aplikasi dari awal, bukan tetapan yang boleh anda hidupkan.
Empat mekanik yang menentukan sama ada muat turun bertahan
- Permintaan julat
- Permintaan HTTP yang meminta byte 5,000,000 dan seterusnya dan bukan keseluruhan fail. Jika pelayan menjawab
206 Partial Content, sambung semula dari tengah mungkin; jika ia menjawab200 OKdan bermula dari awal, tidak mungkin — fail perlu diambil semula dari sifar. - Sambungan selari
- Membahagikan satu fail kepada beberapa julat dan mengambilnya pada masa yang sama. Ia membantu kerana satu sambungan tunggal selalunya dihadkan oleh pelayan atau dihadkan oleh kependaman perjalanan pergi-balik, bukan kerana internet anda lebih laju dengan lebih banyak soket dibuka.
- Ofset komited
- Berapa banyak fail yang selamat ditulis ke cakera, berbanding masih dalam perjalanan. Muat turun yang sambung semula daripada byte terakhir yang komited adalah betul; yang sambung semula daripada apa yang *disangkanya* diterima menghasilkan fail rosak yang hanya terdedah berjam-jam kemudian.
- Sesi latar belakang
- Pemindahan yang dijalankan sistem yang diterangkan di atas. Ia lebih perlahan untuk bermula, tidak boleh diberikan logik tersuai sewenang-wenangnya, dan ia satu-satunya yang terus berjalan apabila aplikasi tidak berjalan.
Kenapa muat turun gagal, dan bagaimana rupa setiap kegagalan
Kebanyakan laporan "muat turun tersekat" adalah salah satu daripada lima ini, dan mudah dibezakan sebaik sahaja anda tahu bentuknya.
| Apa yang anda lihat | Apa yang sebenarnya berlaku | Apa yang membantu |
|---|---|---|
| Berhenti sebaik sahaja anda keluar daripada aplikasi | Pemindahan berjalan dalam proses, bukan dalam sesi latar belakang. | Tiada apa yang boleh anda lakukan dari luar — ini adalah isu reka bentuk aplikasi. |
| Bermula semula dari 0% setiap kali | Pelayan mengabaikan permintaan julat, jadi tiada cara untuk meneruskan dari tengah. | Sambungan yang stabil, atau fail yang lebih kecil. Sesetengah hos membenarkan julat hanya untuk pautan yang ditandatangani. |
| Gagal selepas beberapa minit, berulang kali | Pautan telah tamat tempoh. Banyak hos mengeluarkan URL yang sah selama lima atau sepuluh minit. | Ambil semula pautan daripada halamannya dan mula semula; yang lama tidak akan pernah berfungsi. |
| Memuat turun dengan pantas, kemudian fail tidak dapat dibuka | Apa yang tiba adalah halaman ralat HTML atau halaman log masuk dengan nama fail video. | Semak saiz — "filem" 14 KB adalah halaman web. Periksa pautan sebelum meneruskan. |
| Sangat perlahan walaupun sambungan pantas | Pengehadan setiap sambungan di penghujung pelayan. | Lebih banyak sambungan selari, jika pelayan membenarkannya. Jika ia mengehadkan mengikut alamat IP dan bukan soket, tiada apa yang akan membantu. |
Apabila langsung tiada fail untuk dimuat turun
Sebahagian besar video di web tidak disampaikan sebagai fail. Ia disampaikan sebagai HLS — senarai main .m3u8 yang menyenaraikan ratusan segmen kecil, beberapa saat setiap satu, selalunya pada beberapa tahap kualiti supaya pemain boleh menukar apabila sambungan anda berubah. Tiada satu URL tunggal yang memegang filem itu, kerana filem itu hanya wujud sebagai satu urutan.
Menyimpan satu bermakna mengambil setiap segmen dan kemudian remux: menulis strim video dan audio ke dalam bekas MP4 biasa. Tiada apa yang dienkod semula, jadi tiada apa yang hilang dan ia mengambil masa beberapa saat dan bukan sepanjang filem itu. Hasilnya adalah fail biasa yang dimainkan di mana-mana sahaja.
Ini juga sebab kenapa "muat turun strim ini" mengambil masa lebih lama untuk bermula berbanding memuat turun fail: senarai main perlu diambil dan dihurai, satu tahap kualiti dipilih, dan hanya kemudian segmen boleh mula tiba. Dan ini sebab kenapa sesetengah strim langsung tidak boleh disimpan — jika segmen disulitkan di bawah skim DRM, kunci sengaja tidak boleh diperoleh, dan tiada alat yang menghormati undang-undang akan mengatasinya.
Apa yang membezakan pengurus muat turun sebenar daripada sekadar butang muat turun
Ia bertahan apabila aplikasi ditutup
Pemindahan latar belakang diserahkan kepada sistem, dengan penyerahan yang diteruskan daripada byte komited yang sama dan bukan memulakan fail semula.
Ia memberitahu anda apa itu pautan sebelum anda komited
Saiz, jenis dan sama ada pelayan menyokong sambung semula — semuanya boleh diketahui daripada satu permintaan HEAD, dan semuanya berguna sebelum anda membelanjakan empat gigabait pelan data.
Ia beratur dan bukan membanjiri
Sepuluh fail serentak lebih perlahan daripada tiga pada satu masa, kerana setiap sambungan mendapat bahagian yang lebih kecil dan kegagalan berganda. Baris gilir dengan had konkurensi yang munasabah selesai lebih cepat.
Apa yang mendarat adalah fail biasa
Dalam folder yang boleh anda lihat, dinamakan dengan munasabah, boleh dimainkan oleh apa sahaja — bukan blob pangkalan data yang hanya boleh dibuka oleh aplikasi itu.
Tabiat yang mengelakkan kebanyakan masalah muat turun
- Mulakan fail besar pada Wi-Fi dan biarkan skrin menyala untuk beberapa saat pertama
Penyerahan kepada sesi latar belakang berlaku awal; selepas itu skrin tidak lagi penting.
- Jangan beratur dua puluh item sekali gus
Tiga hingga lima pemindahan serentak adalah titik terbaik pada hampir setiap sambungan.
- Semak ruang kosong sebelum, bukan selepas
Pemindahan yang memenuhi cakera gagal pada 98%, dan iOS mungkin sudah membuang cache anda cuba membuat ruang.
- Berhati-hati dengan "selesai" secara serta-merta
Filem yang selesai dalam dua saat adalah halaman ralat. Lihat saiz failnya.
- Ambil semula pautan tamat tempoh daripada halamannya
Mencuba semula URL bertandatangan yang mati akan gagal selama-lamanya, tidak kira berapa kali aplikasi mencubanya semula.
Bagaimana ini berbeza merentasi peranti
Persekitaran paling ketat: penggantungan agresif dan storan terhad. Sesi latar belakang bukan pengoptimuman di sini, ia satu-satunya yang berfungsi.
Peraturan yang sama, dengan lebih banyak ruang untuk berjalan — dan satu-satunya peranti iOS di mana koleksi besar boleh secara munasabah mendarat pada pemacu luaran dan bukan storan dalaman.
Langsung tiada penggantungan, jadi pemindahan panjang berkelakuan sama seperti pada mana-mana desktop. Had praktikalnya adalah pelayan, bukan sistem pengendalian.
Soalan yang timbul daripada ini
Adakah lebih banyak sambungan sentiasa bermakna muat turun lebih pantas?
Tidak. Ia membantu apabila pelayan mengehadkan kelajuan setiap sambungan individu, yang biasa berlaku. Ia tidak membantu apabila hadnya adalah sambungan anda sendiri, dan ia boleh menjadikan keadaan lebih teruk apabila hos mengira soket setiap alamat IP dan mula menolaknya. Antara empat dan lapan adalah julat yang berguna; tiga puluh adalah kontraproduktif.
Bolehkah muat turun diteruskan semasa skrin dikunci?
Ya, jika ia diserahkan kepada perkhidmatan pemindahan latar belakang sistem. Skrin dikunci tidak relevan kepada perkhidmatan itu — aplikasi digantung itulah yang penting, dan tujuan keseluruhan mekanisme ini adalah ia terus berjalan tidak kira apa.
Kenapa muat turun saya bermula semula dan bukan sambung semula?
Pelayan tidak menghormati permintaan julat. Anda boleh tahu kerana kemajuan kembali ke sifar dan bukan meneruskan. Sesetengah hos menyokong julat hanya pada URL muat turun bertandatangan mereka, sesetengah mematikannya sepenuhnya, dan sedikit menghormatinya untuk fail kecil tetapi bukan fail besar.
Adakah menukar strim kepada MP4 sama dengan mengenkodnya semula?
Tidak. Remux memindahkan video dan audio sedia ada ke dalam bekas MP4 tanpa disentuh — lossless, dan cukup pantas untuk selesai dalam beberapa saat. Enkod semula membina semula gambar dengan codec berbeza dan sentiasa kehilangan kualiti. Jika menyimpan strim dua jam mengambil masa dua jam, sesuatu sedang dienkod semula sedangkan ia tidak perlu.
Bagaimana FoxDL memuat turun
Enjin ini mempunyai dua laluan: satu dalam proses yang pantas semasa aplikasi berada pada skrin, dan sesi latar belakang sistem yang mengambil alih daripada byte yang sama apabila ia tidak.
- Cebisan selari untuk satu fail, ditulis terus ke kedudukan akhirnya pada cakera dan bukan ke bahagian sementara yang perlu digabungkan kemudian.
- Pemindahan latar belakang yang diteruskan selepas aplikasi meninggalkan skrin, dan mengambil semula pada ofset komited terakhir — bukan pada byte terakhir yang disangka dimiliki oleh aplikasi.
- Sambung semula selepas terputus, dimulakan semula atau ditutup paksa, dengan syarat pelayan menghormati permintaan julat. Apabila tidak, FoxDL memberitahu begitu dan bukan berulang tanpa henti.
- Strim HLS di-remux kepada MP4, jadi apa yang mendarat dalam koleksi adalah fail biasa, bukan folder segmen.
- Pemeriksa muat turun yang melaporkan saiz sebenar, jenis dan sokongan sambung semula bagi sesuatu pautan sebelum anda bermula.
- Segala-galanya mendarat dalam folder biasa yang boleh dilihat oleh aplikasi Files.
Had percuma berbeza mengikut platform: pada iPhone dan iPad sebilangan kecil kali diisi semula dengan video berganjaran pendek yang anda mulakan sendiri; pada Mac, di mana langsung tiada pengiklanan, kiraan harian yang tetap. Pro menghapuskan had pada setiap peranti.
Soalan lazim
- Adakah muat turun terus berjalan apabila saya keluar daripada apl?
- Bolehkah muat turun yang terganggu disambung semula dari tempat ia berhenti?
- Bolehkah FoxDL memuat turun strim HLS (m3u8)?
- Kenapa muat turun saya perlahan, dan bolehkah saya mempercepatkannya?
- Berapa banyak muat turun yang boleh saya lakukan dalam versi percuma?
Teruskan membaca
Apa yang perlu berlaku sebelum halaman web memberikan anda failnya
Empat cara halaman menyampaikan video, dan kenapa hanya satu daripadanya adalah fail yang boleh anda simpan.
Di mana sebenarnya fail anda berada pada iPhone, dan siapa yang boleh melihatnya
Sandbox itu, ke mana sebenarnya muat turun pergi, dan kenapa menamakan semula fail merosakkan begitu banyak aplikasi.
Kenapa iPhone anda membuka satu fail video dan menolak yang seterusnya
Bekas, codec, dan tiga cara menonton fail yang enggan dibuka oleh iOS.
Koleksi anda, akhirnya dalam satu tempat.
Muat turun percuma. Tiada akaun, tiada daftar — set penuh dalam versi percuma.