Hi Michael!
es gibt keine Möglichkeit, die Geschwindigkeit "des Apache" mit derjenigen "des IIS" zu vergleichen.
Das Unternehmen scheitert schon daran, daß es "den Apachen" gar nicht gibt.
Was es tatsächlich gibt, das ist ein aus einer konfigurierbaren (!) Menge von Modulen zusammengebundenes httpd-Binary, welches "einen bestimmten Apache" ausmacht.
Naja, aber ich kannmir auf derselben Maschine einen für meine Zwecke optimalen IIS und einen optimalen Apachen zusammenbauen, und dieselben Daten im Doc-Root und die selben Requests abfeuern udn messen, dann shee ich welcher schneller ist, das das nicht allgemeingültig sein kann ist klar, zeigt aber eine Tendenz auf, oder?
Und "statische Seiten" ist auch ein völlig untaugliches Kriterium. Nicht nur die dynamische Berechnung eines Seiteninhaltes kostet schließlich Zeit, sondern eine Vielzahl anderer Features, die vorher im Webserver gelaufen sein können:
- URL-Manipulation (mod_rewrite)
- Übersetzung von URLs in Pfadnamen (mod_alias, mod_dir, ...)
- Berechtigungsprüfung (mod_auth_*)
- Suche nach dezentralen Konfigurationsanweisungen für "Scopes" (.htaccess)
- Content Negotiation
All diese Mechanismen sind _vor_ dem Zugriff auf eine _statische_ Datei bereits abgeschlossen - und wenn sie durchlaufen werden mußten, kostet sie natürlich Zeit.
Statische Seiten ist für mich _nichts_ von alledem, einfach HTML ausliefern wie es angefragt wird, merh nicht.
Wenn Du einen Apache auf diejenigen Funktionen reduzierst, die Du tatsächlich benötigst, und die entsprechenden Module gar nicht erst mit einkompilierst (oder die Funktion abschaltest, falls sie im core steckt - "AllowOverride None" ist so eine Direktive, und "Options FollowSymLinks" ebenfalls - lies mal den Apache Performance Tuning Guide), dann wird der Apache bei Zugriffen auf die immer noch identische statische Datei natürlich erheblich schneller.
Das habe ich auch eingesehen, der Apache wird schneller als ich es je brauchen würde!
Ist ja auch logisch, der Apache ist ein wirklich tooles und _flexibles_ programm, nur bin ich der Meinung das Flexibilität fast immer auf Kosten von Performance geht.
Deshalb verwende ich mod_so ja auch nicht, und mod_rewrite vermeide ich ebenfalls.
Für so einen Fall würde ich das auch nicht tun, wobei ich zur Zeit doch mod_so verwende, denn es ändert sich einfach noch zu viel an meinen Anforderungen, und irgednwann fängt ./configure...; make; make install an zu nerven, vor allem das make beim Apache mit einigen einkompilierten Modulen schonmal die ein oder andere Minute dauert!
Ich brache keinen Webserver der den Request erstmal parst, analysiert,
Doch, den brauchst Du. Du mußt schließlich HTTP unterstützen.
Wieso? Ich muß nur an einem Socket lauschen und schreibe das was da ankommt direkt ungesehen in eine Datei, als Antwort kommmt ein festgelegter Response, wozu muss ich da HTTP können?
mit irgendwelchen KOnfigurationsdaten abgleicht,
Das kommt darauf an, wie kompliziert diese Konfigurationsdaten sind - das liegt in Deiner direkten Einflußnahme.
stimmt, aber ich werde sie nicht los, einiges muss einfach so gelesen werden.
loggt, und dann aus dem Dateisystem eine Datei holt,
Über mod_mmap_static kannst Du Deine Reponse im Hauptspeicher halten lassen und damit den Dateizugriff komplett vermeiden.
Sowas kann der Apache??? Interessant...
dynamisch einen Header erzeugt,
Du kennst mod_asis, das Dateien inklusive fertiger HTTP-Header unmanipuliert ausliefert?
und das auch...
Bei mir reichen 3 Schritte. HTTP-Header entgegennehmen, in Datei schreiben und fertigen Response senden, der immer gleich ist.
Das kann der Apache im Prinzip auch. Du mußt ihn nur so konfigurieren, daß er genau dies tut, und alles andere rauswerfen.
ja, Du hast sicher Recht.
Wenn Du mit dem Apache konkurrieren können willst, dann liest erst mal die Beschreibung sämtlicher Module durch, die es bereits gibt ... ich erkenne da diverse Lücken bei Dir.
Das stimmt, hätte nie gedacht das es sowas gibt, vielen Dank für die Hinweise!
Grüße
Andreas