Genommen erhalten auszuführen Wenn Sie nur die Größe der Datei abrufen möchten, ist es am besten HTTP HEAD zu verwenden, die Gibt nur die Antwortheader vom Server ohne den Text zurück.
Sie können eine HEAD-Anfrage in Node.js wie diese machen:
var http = require("http"),
// make the request over HTTP HEAD
// which will only return the headers
requestOpts = {
host: "www.google.com",
port: 80,
path: "/images/srpr/logo4w.png",
method: "HEAD"
};
var request = http.request(requestOpts, function (response) {
console.log("Response headers:", response.headers);
console.log("File size:", response.headers["content-length"]);
});
request.on("error", function (err) {
console.log(err);
});
// send the request
request.end();
EDIT:
Ich erkannte, dass ich nicht wirklich Ihre Frage beantworten, die im Wesentlichen „Wie Ich beende eine Anfrage frühzeitig in Node.js? ". Sie können durch den Aufruf response.destroy() jede Anforderung in der Mitte der Verarbeitung beenden:
var request = http.get("http://www.google.com/images/srpr/logo4w.png", function (response) {
console.log("Response headers:", response.headers);
// terminate request early by calling destroy()
// this should only fire the data event only once before terminating
response.destroy();
response.on("data", function (chunk) {
console.log("received data chunk:", chunk);
});
});
Sie dies durch Auskommen testen die die destroy() Aufruf und die Beobachtung, dass in einer vollständigen Anforderung zwei Stücke zurückgegeben werden. Wie bereits an anderer Stelle erwähnt, ist es jedoch effizienter, einfach HTTP HEAD zu verwenden.
Danke, für die Antwort. Wie ist das anders als response.end() und wann sollte ich das verwenden? – Tushar
Noch eine Sache, wenn ich einen Listener nicht an das Ereignis "Daten" binde, werden die Daten noch übertragen? Ich meine meine Bandbreite wird unnötigerweise verschwendet werden? – Tushar
Ja, die Daten werden weiterhin an den Client gesendet, auch wenn Sie das Ereignis "data" nicht verarbeiten. –