Horst Meier: .htacces Performanceproblem???

Hallo ich habe hier auf einem Server ca. 18000 dnymaisch URLs die ich alle mit einem eigenen html Alias versehen möchte.

Das wäre ja in der htaccess:

/blubb.htm index.php?id=xx

Wenn ich nun 18000 Zeilen in die htacces auf diese Weise eintrage funktiniert das ja soweit. Nun aber meine Frage. Führt das zu erheblichen Performanceproblemen? Oder ist das mehr oder weniger egal solange ein flotter Server die htacces verarbeitet? Die Datei ist immerhin 1.8MB groß, was ja für eine "Textdatei" nicht wenig ist.

  1. Hi Horst!

    Du kannst mod_rewrite auch in Verbindung mit einer Datenbank und/oder einem Skript einsetzen.

    Dazu musst du dich mit der RewriteMap Directive auseinandersetzen.

    Da ich mich selbst noch nicht damit beschäftigt habe, bin ich dir da von nun an keine große Hilfe, aber vielleicht ist es ja ein guter Startpunkt für weitere Recherchen.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. Hallo ich habe hier auf einem Server ca. 18000 dnymaisch URLs die ich alle mit einem eigenen html Alias versehen möchte.

    Das wäre ja in der htaccess:

    /blubb.htm index.php?id=xx

    Solltest du mod_rewrite nutzen, sähe das ehr so aus:

    RewriteRule ^blubb.htm$ index.php?id=xx [L]

    Wenn ich nun 18000 Zeilen in die htacces auf diese Weise eintrage funktiniert das ja soweit. Nun aber meine Frage. Führt das zu erheblichen Performanceproblemen?

    In der httpd.conf ist es zweifelsohne performanter. Schließe alles, was nicht auf .htm endet (Grafiken z.B.), von deinen Regeln aus. Zwar muss dann trotzdem bei jedem Request jede regEx immer kompiliert werden, die Regeln würden aber wenigstens nicht mehr durchlaufen werden.

    RewriteRule !.htm$ - [L]
    RewriteRule ^blubb.htm$ index.php?id=xx [L]
    RewriteRule ^foo.htm$ index.php?id=xx [L]

    Problem bei einer RewriteMap: Hängt diese (langsame db-Abfrage z.B.), hängt der ganze Request. Andererseits, wenn du immer über index.php?id=... auslieferst, – warum schreibst du dann nicht .htm$ auf index.php um, wertest in der index.php $_SERVER['REQUEST_URI'] aus, ermittelst die id und lieferst die index.php entspr. aus? Das sieht mir zumindest einfacher aus, funktioniert aber natürlich nur, wenn alles über die index.php und nicht über mehrere Dateien läuft.

    1. Vielen Dank ich habe das genau so gemacht wie Du gesagt hast. Alles auf die index.php umschreiben lassen und dann mit REQUEST_URI gearbeitet.