• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

HTTP Pipelining unterbinden (PHP)

skooli

Lounge-Member
Ich habe eine Statistik-Seite mit mehreren Containern. Der Inhalt wird zwar gecached aber on-the-fly neu generiert wenn eine Cache-Lifetime überschritten wird.
Damit der User nicht warten muss bis alle Container ausgeliefert wurden hole ich deswegen alle einzeln per ajax, die Idee dahinter: cached blöcke kommen sofort zurück und sind verfügbar während andere Container evtl. noch 1-2s brauchen bis sie im Browser landen.

HTTP Pipelining macht mir hier allerdings einen Strich durch die Rechnung: Statt jeden Block in einem eigenen Request abzufragen werden die Requests pipelined was im endeffekt bedeuted dass der client sie nicht gleichzeitig abfragt sondern hintereinander auf einer Connection - mit etwas Pech muss man also doch warten bis eine uncached Abfrage ankommt bevor man die cached Anfragen bekommt obwohl sie eigentlich schon fertig sind aber die connection noch dicht ist (da ja spezifiziert ist dass der server die requests in der reihenfolge beantworten muss wie sie bei ihm ankommen).

Ich habe jetzt explizit gesetzt:
header('Connection: Close');
allerdings funktioniert das nicht, der Server (ngninx) schickt immer noch Connection: keep-alive zum Client. Gibts es eine Möglichkeit HTTP Pipelining zu unterbinden?
 
Update: Gerade noch in JQuerys beforeSend-Methode eingebaut:
xhr.setRequestHeader("Connection", "close");
allerdings ignoriert firefox das auch und schickt ebenfalls keep-alive
 
könnte man mit php nicht auch einen header setzten um das zu verhindern?

header("Connection: close");
header("Content-Encoding: none");

lg xxoes
 
Zuletzt bearbeitet:
hab ich doch bereits, wie im ersten post beschrieben.
Wozu soll soll der Content-Encoding header gut sein?
 
wird z.B. für komprimierieng der daten verwendet und ich glaube auch für das blockweise übertragen bin mir da aber nicht sicher. Kann man php sagen das er nur HTTP/1.0 verwenden soll? weil da gibts dieses Pipelining nicht.

header('HTTP/1.0 200 OK');
 
hatte ich auch schon drangedacht, aber da spielt nginx auch nicht mit, der schickt http/1.1

Schätze wohl ich muss mich mit dem effekt anfreunden
 
Zurück
Oben