Puhverserveri tühikäigu aegumised pikkade HTTP-tööde ajal
Valige küsitlus või määratletud voogedastusvorming, kui pikk serveritöö puutub kokku puhverserveri tühikäigu piiriga, selle asemel et lisada lõplikku vastusesse suvalisi baite.
Kui teenus vaikib minuteid ja puhverserver aegub, valige, mida klient peaks saama enne südamelöögi baitide lisamist. Taimeri pikendamine võib ühte ootust aidata; vastuse leping määrab, milline edenemine on kehtiv.
| Rakenduse disain | Edenemise leping |
|---|---|
| Asünkroonne töö | 202 Accepted koos jälgimist kirjeldava esitusega, millele järgnevad lõplikud olekupäringud ja selgesõnalised lõpetamise/ebaõnnestumise olekud |
| Server-Sent Events voog | Content-Type: text/event-stream ja kirjed, millest SSE klient aru saab |
202 ei taga, et töö õnnestub. SSE puhul võib kommentaarkirje välja näha nii:
: heartbeat
Koolon teeb sellest kommentaari, mitte rakenduse sündmuse. HTML-i autorlusmärkmed soovitavad perioodilisi kommentaare umbes iga 15 sekundi järel teatud vana puhverserveri tühikäigu käitumise vastu; see on juhis, mitte universaalne aegumisgarantii.
Lõpetage päised ja veenduge, et rakendus/teeninduskiht vabastab kirjed, selle asemel et neid kohapeal puhverdada. Veel saatmata baidid ei saa allavoolu vahendajat aktiivsena hoida.
Ärge sisestage SSE-kommentaare tavalise JSON-i ega binaarse sisu sisse. HTTP/1.1 nullpikkusega chunk lõpetab chunked-keha, seega pole see korratav tühi südamelöök.
Hoidke töö tähtaeg ja tühistamispoliitika. Ainult liiklusaktiivsus ei näita kasulikku töö edenemist ega kehtivat lõpptulemust.