Frage

Ich habe eine Lösung entwickelt, die Informationen über einen AJAX-Aufruf setzt und aktualisiert die Client-Seite alle 10 Sekunden abgerufen werden. Dies funktioniert gut, aber ich bin bei der Skalierbarkeit des Codes betrifft, angesichts der Anzahl und Länge der Header vom Client zum Server weitergeleitet werden und wieder zurück. Ich habe eine Reihe von redundanten Header auf der Server-Seite entfernt, meist ASP.NET bezogen, und jetzt bin ich versucht, auf den Header vom Client kommt zu reduzieren.

Der Browser von meiner Firma verwendet wird, ist IE (Version 6, 7 bald aufgerüstet werden). Dies ist eine Annäherung an meinem aktuellen Code:

var xmlHTTP = new ActiveXObject('Microsoft.XMLHTTP');

xmlHTTP.onreadystatechange = function() {
    if ((xmlHTTP.readyState == 4) && (xmlHTTP.status == 200)) {
        myCallbackFunction(xmlHTTP);
    }
};

xmlHTTP.open('GET', 'myUrl.aspx');

try {
    xmlHTTP.setRequestHeader("User-Agent", ".");
    xmlHTTP.setRequestHeader("Accept", ".");
    xmlHTTP.setRequestHeader("Accept-Language", ".");
    xmlHTTP.setRequestHeader("Content-Type", ".");
} catch(e) {}

xmlHTTP.send();

Obwohl Ich habe gelesen , dass es möglich ist, einige dieser Header zu löschen, ich hat keine Möglichkeit, es zu tun, das funktioniert in IE6 gefunden. Einstellen sie führt zu einer Type Mismatch Ausnahme auf null, also habe ich gerade zu Ende gegangen, um sie mit dem Ersetzen ‚‘ vorerst. Gibt es eine andere Möglichkeit, sie von Clearing oder ein alternatives Verfahren zur Herstellung der eingereichten HTTP-Header zu reduzieren?

Auch scheint es keine Möglichkeit, zu ersetzen oder zu Verkürzung der ‚Referrer-‘ Kopfüberhaupt zu sein.

War es hilfreich?

Lösung

Nach dem WD spec

  

Die setRequestHeader () Methode fügt einen Wert, wenn der HTTP-Header als Argument angegeben ist bereits Teil der Liste der Request-Header.

Das heißt, Sie Header hinzufügen könnten, nicht ersetzen.

Dies ist nicht völlig aktuellen Browser-Verhalten übereinstimmen, aber es kann sein, wo Browser geleitet werden, wobei in diesem Fall alle Bemühungen an dieser Front sind eine Verschwendung von Zeit auf lange Sicht. In jedem Fall aktuelle Browser-Verhalten mit der Einstellung Header ist sehr vielfältig und in der Regel nicht als verlässlich angesehen werden kann.

  

Es scheint die ‚Referrer-‘ Header überhaupt keine Möglichkeit, zu ersetzen oder zu Verkürzung zu sein.

Das würde mich nicht überraschen, da einige Leute irrigerweise ‚Referer‘ verwenden [sic] als Zugangskontrollmechanismus.

Sie könnten versuchen, sicherzustellen, dass die aktuelle Seite URL nicht übermäßig lang war, aber ehrlich alles riecht nach vorzeitiger Optimierung zu mir zu sein. Was auch immer Sie tun, um Ihre Anfrage innerhalb eines IP-Paket passen wird, so gibt es gonig keine große sichtbare Unterschied in der Leistung zu sein.

Es kann Mibbit (wie erwähnt auf dem Blog Sie verbunden sind) sich lohnen, dieses Zeug zu versuchen, weil Mibbit eine ganz erstaunliche Menge an Verkehr zieht, aber für eine einfache unternehmensweite Anwendung Ich glaube nicht das Cross-Browser -and-Proxy-Test-Belastung. Endbenutzer-Nutzen-Verhältnis mit dem Headern messing ist es wert

Andere Tipps

IE 6 und ältere Versionen verwenden, um die ActiveXObject von MSXML.XMLHTTP erstellt (abgeleitet tatsächlich von IXMLHTTPRequest ), während IE 7 und andere moderne Browser wie Mozilla verwenden, um ein intrinsisches XmlHttpRequest Objekt aufgerufen. Dies ist wahrscheinlich der Grund, warum Sie nicht die Anforderung Header festlegen können für die MSXML-Implementierung null aber Sie können für die in-built-Objekt.

Daher glaube ich nicht, dass es eine Möglichkeit ist, um gemeinsam klar alle Header. Der Link zu Mibbit, dass Sie nur präsentieren bietet eine Funktion alle Header setzen eins nach dem anderen auf null. Für normale Szenarien kann eine Senkung auf Header beweisen eine sehr, sehr unbedeutend reduzieren Verkehrslast sein.

Das heißt, ich bin neugierig zu wissen, warum Sie die Request-Header setzen auf "." anstatt einen leeren String "".

würde ich diese Art von Mikro-Optimierungen verzichten und stattdessen ein Push-Modell suchen. Über einen Startplatz:

  • Flash-persistente Sockets erstellen können, und vermitteln die Ereignisse in Javascript.
  • Sie könnten Bidirektionale Ströme über synchrone HTTP (BOSH) implementieren. Finden Sie unter http://xmpp.org/extensions/xep-0124.html

Beide sind mit einem XMPP-Server auf der Back-End-Regel gepaart.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top