Stahování

Co dělá správce stahování, co webový prohlížeč neumí

Čtyřgigabajtový soubor, hotovo z devadesáti procent, a pak telefonát — nebo jen zamknutá obrazovka — a je pryč. Tohle je nejčastější stížnost na stahování na iOS, a není to chyba. Je to operační systém dělající přesně to, k čemu byl navržený, a důvod, proč existuje samostatná třída aplikací.

7 min čtení Aktualizováno 29. července 2026

  • 30s Zhruba tak dlouho běží pozastavená aplikace, než ji iOS zastaví
  • 206 HTTP stav, který vůbec umožňuje obnovení
  • 1 bajt Kolik se toho znovu stáhne u správně obnoveného přenosu

Proč se přenos zastaví při přepnutí aplikace

iOS nedovolí aplikaci pokračovat v práci jen proto, že by chtěla. Když aplikaci opustíš, je během pár vteřin pozastavená, a pozastavená aplikace nemá žádný čas procesoru, žádné síťové sokety a žádný způsob, jak zjistit, že byla zastavena. Všechno, co držela v paměti, tam pořád je, ale zamrzlé — a pokud systém potřebuje paměť, je aplikace rovnou ukončena, aniž by o tom byla informována.

Stahování běžící na běžném připojení uvnitř aplikace tedy končí u gesta na plochu. Některé aplikace to skrývají tím, že si vyžádají pár vteřin navíc na pozadí, a proto stahování občas přežije přepnutí přesně na tak dlouho, jak ti trvá si všimnout, že nepřežilo.

Správná odpověď je jiného druhu. iOS poskytuje službu přenosu na pozadí: předáš systému seznam URL adres a cílů, a systém stahování provádí sám, ve vlastním procesu, podle vlastního harmonogramu. Tvá aplikace může být pozastavená, ukončená, nebo vůbec neběžet — přenos pokračuje a aplikace se znovu spustí na pozadí, když je co hlásit. Tohle je mechanismus za každým stahováním, které přežije zamknutou obrazovku, a jeho použití je návrhové rozhodnutí, které aplikace udělá předem, ne nastavení, které zapneš.

Čtyři mechanismy, které rozhodují, jestli stahování přežije

Range request
HTTP požadavek, který žádá o bajty od 5 000 000 dál místo celého souboru. Pokud server odpoví 206 Partial Content, obnovení od poloviny je možné; pokud odpoví 200 OK a začne od začátku, není — soubor se musí stáhnout znovu od nuly.
Paralelní připojení
Rozdělení jednoho souboru na několik rozsahů a jejich stahování zároveň. Pomáhá to, protože jedno připojení je často omezené serverem nebo latencí, ne proto, že by tvůj internet byl rychlejší s víc otevřenými sokety.
Potvrzený posun (committed offset)
Kolik ze souboru je bezpečně zapsáno na disk, na rozdíl od toho, co je pořád na cestě. Stahování, které se obnoví od posledního potvrzeného bajtu, je správné; to, co se obnoví od toho, co *si myslí*, že přijalo, vyrobí poškozený soubor, který se prozradí až za hodiny.
Relace na pozadí
Přenos řízený systémem, popsaný výše. Startuje pomaleji, nemůže dostat libovolnou vlastní logiku, a je to jediná věc, která pokračuje, když aplikace neběží.

Proč stahování selže a jak každé selhání vypadá

Většina hlášení o „zaseknutém stahování“ je jedním z těchto pěti, a jde je snadno rozlišit, jakmile znáš vzor.

Co vidíšCo se skutečně dějeCo pomůže
Zastaví se ve chvíli, kdy opustíš aplikaciPřenos běžel v procesu aplikace, ne v relaci na pozadí.Zvenku nic — tohle je problém návrhu aplikace.
Pokaždé restartuje od 0 %Server ignoruje range požadavky, takže není jak pokračovat od poloviny.Stabilní připojení, nebo menší soubor. Někteří poskytovatelé dovolí range jen u podepsaných odkazů.
Selže po pár minutách, opakovaněOdkaz vypršel. Řada serverů vydává URL platné jen pět nebo deset minut.Znovu si vyžádej odkaz ze stránky a začni znovu; starý nebude fungovat nikdy.
Stáhne se rychle, pak se soubor neotevřePřišla HTML chybová stránka nebo přihlašovací stránka s názvem video souboru.Zkontroluj velikost — 14KB „film“ je webová stránka. Prohlédni si odkaz, než se do něj pustíš.
Velmi pomalé i přes rychlé připojeníOmezování na straně serveru pro jedno připojení.Víc paralelních připojení, pokud je server dovolí. Pokud omezuje podle IP adresy místo soketu, nic nepomůže.

Když neexistuje žádný soubor ke stažení

Velká část videa na webu se nedodává jako soubor. Dodává se jako HLS — playlist .m3u8, který vypisuje stovky malých segmentů, každý pár vteřin, často na několika kvalitativních úrovních, aby přehrávač mohl přepínat podle tvého připojení. Neexistuje jedna URL adresa držící celý film, protože film existuje jen jako posloupnost.

Uložit ho znamená stáhnout každý segment a pak provést remux: zapsat video a zvukové streamy do normálního MP4 kontejneru. Nic se nepřepočítává, takže se nic neztrácí, a trvá to vteřiny místo délky filmu. Výsledkem je běžný soubor, který se přehraje kdekoli.

To je taky důvod, proč „stáhnout tento stream“ trvá znatelně déle, než se rozjede, oproti stahování souboru: playlist se musí stáhnout a zpracovat, vybrat kvalitativní úroveň, a teprve pak mohou začít přicházet segmenty. A je to důvod, proč se některé streamy vůbec nedají uložit — pokud jsou segmenty šifrované pod DRM schématem, klíče jsou záměrně nedostupné, a žádný nástroj respektující zákon se přes to nedostane.

Co odlišuje skutečného správce stahování od tlačítka stáhnout

Přežije zavření aplikace

Přenosy na pozadí předané systému, s předáním, které pokračuje od stejného potvrzeného bajtu místo znovu od začátku.

Řekne ti, co odkaz je, než se do něj pustíš

Velikost, typ a jestli server podporuje obnovení — všechno zjistitelné z jednoho HEAD požadavku, a všechno užitečné dřív, než utratíš čtyři gigabajty datového plánu.

Řadí do fronty, nezahlcuje

Deset souborů najednou je pomalejších než tři zároveň, protože každé připojení dostane menší podíl a selhání se násobí. Fronta s rozumným limitem souběžnosti skončí dřív.

Co přistane, je normální soubor

Ve složce, kterou vidíš, rozumně pojmenovaný, přehratelný čímkoli — ne databázový blob, který otevře jen ta aplikace.

Zvyky, které předchází většině problémů se stahováním

  • Spusť velké soubory na Wi-Fi a nech obrazovku zapnutou prvních pár vteřin

    Předání relaci na pozadí se děje brzy; potom už na obrazovce nezáleží.

  • Nefronti dvacet položek najednou

    Tři až pět souběžných přenosů je optimum na skoro každém připojení.

  • Zkontroluj volné místo předem, ne až potom

    Přenos, který zaplní disk, selže na 98 %, a iOS už mohl vyčistit tvé mezipaměti ve snaze udělat místo.

  • Buď podezřívavý k okamžitě „dokončenému“

    Film, který skončil za dvě vteřiny, je chybová stránka. Podívej se na velikost souboru.

  • Znovu si vyžádej vypršené odkazy z jejich stránky

    Opakované zkoušení mrtvé podepsané URL selže navždy, bez ohledu na to, kolikrát to aplikace zkusí.

Jak se to liší mezi zařízeními

iPhone

Nejpřísnější prostředí: pozastavování je agresivní a úložiště těsné. Relace na pozadí tady nejsou optimalizace, jsou to jediná věc, která funguje.

iPad

Stejná pravidla, s víc prostorem — a jediné iOS zařízení, kde velká knihovna může rozumně přistát na externím disku místo interního úložiště.

Mac

Žádné pozastavování vůbec, takže dlouhé přenosy se chovají jako na jakémkoli desktopu. Praktickým limitem je server, ne operační systém.

Otázky, které to vyvolává

Znamená víc připojení vždy rychlejší stahování?

Ne. Pomůže to, když server omezuje rychlost jednotlivého připojení, což je běžné. Nedělá to nic, když je omezením tvé vlastní připojení, a může to zhoršit situaci, když poskytovatel počítá sokety podle IP adresy a začne je odmítat. Někde mezi čtyřmi a osmi je užitečný rozsah; třicet je kontraproduktivní.

Může stahování pokračovat, když je obrazovka zamknutá?

Ano, pokud bylo předáno systémové službě přenosu na pozadí. Zamykací obrazovka je pro tuhle službu irelevantní — záleží na tom, že je aplikace pozastavená, a celý smysl mechanismu je, že pokračuje bez ohledu na to.

Proč se mi stahování restartuje místo obnovení?

Server nectil range požadavek. Poznáš to podle toho, že se průběh vrátí na nulu místo pokračování. Někteří poskytovatelé podporují range jen u podepsaných stahovacích URL, někteří je vypínají úplně, a pár jich to respektuje u malých souborů, ale ne u velkých.

Je převod streamu na MP4 totéž co jeho přepočítání?

Ne. Remux přesune existující video a zvuk do MP4 kontejneru beze změny — bezztrátově, a dost rychle na to, aby to skončilo za vteřiny. Přepočítání přestaví obraz jiným kodekem a vždy ztratí kvalitu. Pokud uložení dvouhodinového streamu trvá dvě hodiny, něco se přepočítává, ačkoli nemuselo.

FoxDL

Jak stahuje FoxDL

Engine má dva pruhy: jeden v procesu, který je rychlý, když je aplikace na obrazovce, a systémovou relaci na pozadí, která převezme řízení od stejného bajtu, když není.

  • Paralelní kusy pro jeden soubor, zapisované rovnou na svou finální pozici na disku místo do dočasných částí, které je potřeba pak spojit.
  • Přenosy na pozadí, které pokračují, i když aplikace opustí obrazovku, a pokračují od posledního potvrzeného posunu — ne od posledního bajtu, o kterém si aplikace myslela, že ho má.
  • Obnovení po výpadku, restartu nebo vynuceném ukončení, pokud server respektuje range požadavky. Když ne, FoxDL to řekne rovnou místo opakování dokola.
  • HLS streamy remuxované do MP4, takže v knihovně přistane běžný soubor, ne složka segmentů.
  • Kontrolor stahování, který ohlásí skutečnou velikost, typ a podporu obnovení odkazu, než začneš.
  • Všechno přistane v běžné složce, kterou vidí aplikace Files.

Bezplatné limity se liší podle platformy: na iPhonu a iPadu malý počet přenosů doplněný krátkým odměněným videem, které spustíš sám; na Macu, kde není žádná reklama vůbec, pevný denní počet. Pro odstraní limit na každém zařízení.

Časté otázky

Všechny otázky

Číst dál

Tvá knihovna, konečně na jednom místě.

Zdarma ke stažení. Bez účtu a registrace — celá sada je ve free verzi.

Stáhnout na App Store