Hi!
Nun dachte ich, dass ich mir die stetig wiederkehrende DNS-Auflösung doch eigentlich sparen könnte. Wie läuft das bei PHP? Gibt es einen DNS-Cache? Im Netz konnte ich nichts finden, ich gehe davon aus: Nein. Nutzt PHP den lokalen DNS-Cache des Betriebsystems, wenn vorhanden? Wenn nein, was haltet ihr von der Entwicklung eines eigenen, eventuell DB-gestützten DNS-Cache hinsichtlich file_get_contents? Sollte man gleich selbst mit Sockets und DNS-Cache arbeiten, um Performance-Gewinne zu erzielen?
Beachte auch, dass der Hostname bei Anfragen an Webserver mit mehreren VirtualHosts unter einer IP-Adresse eine Rolle spielt. Wenn du über die IP-Adresse gehen willst, kannst du nicht mehr so einfach file_get_contents() verwenden sondern brauchst noch ein paar weitere Funktionsaufrufe, um die Stream-Parameter zu setzen. Auch wenn du über Sockets gehst, hast du mehr als einen PHÜ-Funktionsaufruf. Ich bezweifle mit einem Bauchgefühl, dass diese Mehrarbeit weniger aufwendig sein soll, als file_get_contents() intern einen vom Betriebssystem gecachten DNS-Aufruf machen zu lassen.
Gibt es noch andere Teile einer HTTP-Transaktion, die man beschleunigen könnte? Response, Request, Connect liegt ja alles nicht in meiner Hand. Ich sehe da nichts mehr.
HTTP 1.1 verwenden, Connection offen lassen. Aber dann musst du das Protokoll mit seinen Eigenheiten selbst implementieren. Und das wäre mir den Aufwand nicht wert im Verhältnis zu der (nicht) zu erwartenden Einsparung.
Lo!