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?
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?