Come gestire le richieste Web duplicate sul server

1

Gestisco un server web Twisted e sto cercando di capire come gestire i tentativi dal client. Nel normale funzionamento il client effettua una richiesta del server con alcuni dati JSON e riceve una risposta JSON. Ogni richiesta include un'intestazione con un identificativo univoco.

Sto tentando di gestire il caso in cui il client non riceve la risposta (potrebbe scadere) e deve inviare nuovamente la richiesta. Poiché la richiesta può modificare lo stato del server, non desidero che venga rielaborato se è già stato elaborato.

Possibili approcci:

  • Quello a cui sto pensando è il caching di ogni risposta JSON e del client invia una richiesta con un ID di richiesta duplicato, quindi restituisce solo la cache dati. Il fatto è che non sono sicuro di quanto spesso succederà questa situazione effettivamente venire in natura e la memorizzazione nella cache di ogni risposta e l'ispezione di ogni richiesta potrebbe essere eccessiva (alcune risposte sono abbastanza grandi strutture JSON).

  • Potrei ridurre al minimo gran parte del caching semplicemente restituendo una risposta HTTP indica che si trattava di una richiesta duplicata, ma il cliente non lo saprà quale è stata la risposta originale.

Esiste una best practice per gestire richieste duplicate da un server?

    
posta Nick Gotch 29.09.2015 - 17:35
fonte

1 risposta

2

Molto dipende dalla quantità di traffico che ci si aspetta di vedere e dalla frequenza con cui si verificherà questa situazione.

Per evitare l'ottimizzazione prematura , prima andrei con una variazione della tua scelta 2 nd - considera la richiesta duplicata come un errore (e la registra come tale) .

Se vedi accadere abbastanza spesso da giustificare un'azione, allora la tua scelta di < st - mettere in cache l'output - sembra ragionevole. Puoi impostare le regole su quanto tempo i dati devono essere memorizzati nella cache: non è necessario che siano così lunghi.

Se è per questo, penso che ci siano intestazioni HTTP che puoi includere con il tuo output per indicare che i vari server e amp; i firewall sono autorizzati a memorizzare la risposta per un po 'di tempo. Potrebbe essere più facile che preparare il tuo meccanismo di cache.

    
risposta data 29.09.2015 - 17:53
fonte

Leggi altre domande sui tag