Batas waktu menganggur proxy selama tugas HTTP yang lama
Pilih polling atau format streaming yang ditentukan saat kerja server yang lama menemui batas menganggur proxy, alih-alih menyisipkan byte sembarang ke respons akhir.
Jika sebuah layanan diam selama beberapa menit dan proxy kehabisan waktu, pilih apa yang harus diterima klien sebelum menambahkan byte detak jantung. Memperpanjang timer dapat membantu satu penantian; kontrak respons menentukan kemajuan mana yang valid.
| Desain aplikasi | Kontrak kemajuan |
|---|---|
| Tugas asinkron | 202 Accepted dengan representasi yang menjelaskan pemantauan, diikuti permintaan status terbatas dan status penyelesaian/kegagalan yang eksplisit |
| Aliran Server-Sent Events | Content-Type: text/event-stream dan catatan yang dipahami klien SSE |
202 tidak menjanjikan bahwa tugas akan berhasil. Untuk SSE, catatan komentar dapat terlihat seperti ini:
: heartbeat
Titik dua membuatnya menjadi komentar, bukan peristiwa aplikasi. Catatan penulisan HTML menyarankan komentar berkala kira-kira setiap 15 detik terhadap beberapa perilaku menganggur proxy lama; itu panduan, bukan jaminan batas waktu universal.
Selesaikan header dan pastikan tumpukan aplikasi/penyajian melepaskan catatan alih-alih menyangganya secara lokal. Byte yang belum dikirim tidak dapat menjaga perantara hilir tetap aktif.
Jangan sisipkan komentar SSE ke dalam konten JSON atau biner biasa. Chunk panjang nol HTTP/1.1 mengakhiri badan chunked, jadi itu bukan detak jantung kosong yang dapat diulang.
Pertahankan tenggat waktu operasi dan kebijakan pembatalan. Aktivitas lalu lintas saja tidak menunjukkan kemajuan tugas yang berguna atau hasil akhir yang valid.