Časové limity nečinnosti proxy během dlouhých HTTP úloh
Zvolte dotazování nebo definovaný formát streamování, když dlouhá práce serveru narazí na limit nečinnosti proxy, místo vkládání libovolných bajtů do konečné odpovědi.
Pokud služba zůstane minuty tichá a proxy vyprší časový limit, zvolte, co má klient obdržet, než přidáte bajty srdečního tepu. Prodloužení časovače může pomoci jednomu čekání; smlouva o odpovědi určuje, který pokrok je platný.
| Návrh aplikace | Smlouva o pokroku |
|---|---|
| Asynchronní úloha | 202 Accepted s reprezentací popisující monitorování, následovanou konečnými požadavky na stav a explicitními stavy dokončení/selhání |
| Proud Server-Sent Events | Content-Type: text/event-stream a záznamy, kterým klient SSE rozumí |
202 neslibuje, že úloha uspěje. Pro SSE může záznam komentáře vypadat takto:
: heartbeat
Dvojtečka z něj dělá komentář, nikoli událost aplikace. Autorské poznámky HTML doporučují periodické komentáře zhruba každých 15 sekund proti některému starému chování nečinnosti proxy; to je vodítko, nikoli univerzální záruka časového limitu.
Dokončete hlavičky a zajistěte, aby aplikace/serving stack uvolňoval záznamy, místo aby je ukládal lokálně do vyrovnávací paměti. Bajty, které ještě nebyly odeslány, nemohou udržet navazující prostředníka aktivním.
Nevkládejte komentáře SSE do běžného JSON nebo binárního obsahu. Chunk nulové délky HTTP/1.1 ukončuje chunked tělo, takže to není opakovatelný prázdný srdeční tep.
Zachovejte termín operace a politiku zrušení. Samotná aktivita provozu neukazuje užitečný pokrok úlohy ani platný konečný výsledek.