Ho ricevuto più report dagli utenti di un'applicazione GIS basata sul Web che abbiamo implementato uno o due anni fa, lamentando che l'applicazione diventasse instabile / non rispondente. Dopo una breve indagine, ho scoperto che le richieste dell'API di mappe di terze parti occupano la maggior parte delle connessioni disponibili dei browser (estrapolando i livelli dinamici, sono immagini ) e il tempo di elaborazione di queste richieste è stato prolungato a causa di un numero elevato di utenti (1xx vs 1x come pianificato), quindi le richieste della nostra API hanno dovuto attendere connessioni libere e alla fine il timeout, la panoramica di tale situazione è simile a questa:
requests from the Map API (busy) | requests from our own API to get data from DB to display (waiting) | requests from our own API to post data to DB (waiting)
** A FEW MOMENTS LATER **
requests from the Map API (still working...) | requests from our own API to get data from DB to display (timeout) | requests from our own API to post data to DB (timeout)
ciò che voglio ottenere è spostare qualsiasi richiesta dalla nostra API per ottenere dati dal DB davanti alle richieste dall'API della mappa, tuttavia, non è il modo di dire all'API della mappa che deve attendere (più importanti) richieste da la nostra API prima che potessero aggiornare la mappa. Mi sono imbattuto in questa domanda e ho pianificato di proporre una soluzione: apri un socket prima di inizializzare l'API di Map e le richieste dalla nostra stessa API per ottenere i dati passeranno attraverso di essa invece di usare ajax. Mi chiedo ...
Devo fare anche le richieste dalla nostra stessa API per inviare dati a DB anche usando il socket? Poiché l'API di riscrittura funziona con Ajax su Socket, richiede tempo e gli utenti dovrebbero pubblicare gli aggiornamenti dopo aver ottenuto i dati e la mappa aggiornata.
Inoltre, facendo ogni richiesta dalla nostra API tramite socket sembra spostare la congestione della richiesta da Ajax al socket.