JavaScript HTTP Requests in NodeJS langsamer als in Chrome Konsole?

shoa66

Lt. Junior Grade
Registriert
Mai 2005
Beiträge
314
Hey Leute,

kurz zum Kontext: Ich entwickle eine sehr zeitkritische Anwendung, die HTTP requests verschickt und auch mit einer API interagiert (POST an die API) und bei der wirklich jede ms zählt (es gilt Daten als erster zu finden und auch als erster zu verarbeiten und daraufhin einen POST abzusetzen)!

Bei der Entwicklung ist mir aufgefallen, dass HTTP Requests die in der Chrome Konsole via Ajax Request ausgeführt werden in der Regel immer 100-300 ms schneller sind als die Requests in NodeJS via request lib:

42f2f42a-e835-4e86-80cc-04d8f6187aab.png


Dies gilt sowohl für die GETS um die Daten zu holen als auch für den POST um Daten zu senden. Natürlich habe ich das mit höherer Samplesize ausprobiert und ausgewertet, der Screen soll nur nen beispielhafter Vergleich sein.
Ausgangs und Zielserver sind immer die selben, der Ping ist konstant usw.

Ich habe schon mit den Headern (insbesondere "Connection": "keep-alive") sowie der Option forever: true, gespielt, doch beides brachte leider keine Verbesserung.

Kann sich das jemand von euch erklären bzw. habt ihr Vorschläge, was man noch probieren könnte?

Leider ist die Lösung mit der Chrome Konsole keine dauerhafte Lösung, da man dort ja nicht wirklich mit den Request Headern arbeiten kann, was ich leider für ein paar Ideen brauche. Oder geht das via Ajax Requests doch irgendwie?

Besten Dank schon mal vorab!

LG,
 
Wie misst du denn die Dauer, wie lange der Request dauert?

Wieso sollten Request Headers in Chrome nicht setzbar sein?
 
mal eine detailliertere zeitmessung à la hier probiert?
Nafi schrieb:
Wie misst du denn die Dauer, wie lange der Request dauert?

Wieso sollten Request Headers in Chrome nicht setzbar sein?
hauptsaechlich aufgrund von CORS. da die devtools im kontext der webseite laufen gelten fuer sie dieselben restriktionen wie fuer scripte auf der webseite, sprich: kein cross origin kram, nur vlgw. wenige header duerfen gesetzt/gelesen werden, etc.
 
Nafi schrieb:
Wie misst du denn die Dauer, wie lange der Request dauert?

Direkt vor dem Senden des Requests via new Date().getTime(); und direkt nach Empfangen des Requests erneut - und davon dann die Differenz.

Fehler bei der Messung sind aber allein durch die Logik ausgeschlossen (falls du darauf hinaus wolltest), denn wenn man beide Scripts parallel laufen lässt und nur auf den Request counter schaut, sieht man wie das Chrome Konsolen-Script dem NodeJS script "davonläuft" (die Unterschiede beim Counter werden immer höher und NodeJS fällt immer weiter ab, ergo kommen auch faktisch mehr/öfters Requests an).

Nafi schrieb:
Wieso sollten Request Headers in Chrome nicht setzbar sein?

Sorry, my bad, meinte neben den Headern (die wegen CORS wirklich nur bedingt zu gebrauchen sind), auch noch so fancy und nützliche Sachen wie localAddress bzw. proxy, womit man bei der request lib von NodeJS ganz easy mehrere IP-Adressen nutzen kann... wüsste nicht wie das im Browser funktionieren sollte (bin aber immer offen für Anregungen!).

bog schrieb:
mal eine detailliertere zeitmessung à la hier probiert?

Schau ich mir mal an, Danke!
 
Zurück
Oben