Sponsored Links |
|
||||
![]()
Hab mir mal die Arbeit gemacht und ein paar Benchmarks laufen lassen:
Code:
ab -kc 10 -t 60 http://example.com/testcase/dir/datei-0.txt Code:
Document Path: /found.html Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.10580 seconds Complete requests: 46805 Requests per second: 779.95 [#/sec] (mean) Time per request: 12.821 [ms] (mean) Time per request: 1.282 [ms] (mean, across all concurrent requests) Mit mod_rewrite, 100 Einträge via .htaccess: Code:
Document Path: /testcase/dir/datei-0.txt Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.1905 seconds Complete requests: 15584 Requests per second: 259.73 [#/sec] (mean) Time per request: 38.502 [ms] (mean) Time per request: 3.850 [ms] (mean, across all concurrent requests) Mit mod_rewrite, 100 Einträge via httpd.conf: Code:
Document Path: /testcase/dir/datei-0.txt Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.977 seconds Complete requests: 15949 Requests per second: 265.81 [#/sec] (mean) Time per request: 37.621 [ms] (mean) Time per request: 3.762 [ms] (mean, across all concurrent requests) Mit mod_rewrite, 1000 Einträge via .htaccess (Auf keinen Fall eine Alternative): Code:
Document Path: /testcase/dir/datei-0.txt Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.8222 seconds Complete requests: 2968 Requests per second: 49.46 [#/sec] (mean) Time per request: 202.184 [ms] (mean) Time per request: 20.218 [ms] (mean, across all concurrent requests) Mit mod_rewrite, 1000 Einträge via httpd.conf: Code:
Document Path: /testcase/dir/datei-1.txt Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.3325 seconds Complete requests: 7443 Requests per second: 124.04 [#/sec] (mean) Time per request: 80.617 [ms] (mean) Time per request: 8.062 [ms] (mean, across all concurrent requests) Code:
# .htaccess RewriteEngine on RewriteRule ^dir/datei-1\.html\$ cache/datei-1.html RewriteRule ^dir/datei-2\.html\$ cache/datei-2.html # ... RewriteRule ^dir/datei-100\.html\$ cache/datei-100.html Mit PHP und mod_rewrite: Code:
Document Path: /testcase/dir/datei-0.txt Document Length: 16 bytes Concurrency Level: 10 Time taken for tests: 60.1508 seconds Complete requests: 18542 Failed requests: 0 Write errors: 0 Keep-Alive requests: 18363 Total transferred: 3793065 bytes HTML transferred: 296672 bytes Requests per second: 309.03 [#/sec] (mean) Time per request: 32.360 [ms] (mean) Time per request: 3.236 [ms] (mean, across all concurrent requests) Code:
# .htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .+ create.php?file=%{REQUEST_URI} [L] PHP-Code:
![]() Ich werde mich wohl für PHP entscheiden und eine Cache-Kontrolle realisieren müssen (genau das wollte ich mir ersparen). Aber gerade bei vielen Dateien ist PHP dann viel performanter (schreibt man das so?) als .htaccess-Einträge. Geändert von fox (24.09.2008 um 22:38 Uhr) |
Sponsored Links |
|
||||
![]()
Hallo Fox,
ich bin kein Experte auf diesem Gebiet. Aber wenn es nach der Dokumentation geht, dann ist die Performance sehr schnell, wenn die Regeln direkt in die Konfigurationsdatei (httpd.conf) von Apache geschrieben werden ("per-server context"). Das Problem an .htaccess liegt darin, dass der Server zur Laufzeit den Ordner und alle Unterordner scannen muss. Dadurch kann die Verarbeitung sehr langsam werden. Falls du also keinen Zugriff auf das Apache Config hast, dann empfehle dir, die .htaccess Datei in einen leeren Webordner (ohne Unterordner) zu legen. Und ein zentrales PHP-Script würde dann die Steuerlogik übernehmen. Nachtrag: Ich habe deine Benchmarks noch nicht gesehen, da wir beinahe zeitgleich gepostet haben. ![]() |
|
||||
![]() Zitat:
![]() |
|
||||
![]()
Stimmt, das hatte ich vergessen. Habe nun noch einen Benchmark für 1000 Regeln in der httpd.conf hinzugefügt, da ist der Apache wesentlich schneller als per .htaccess. Ironischerweise wird er nur kaum schneller, wenn ich dann 900 Regeln rausnehme und nur 100 stehen lasse? So schafft er kaum 10.000 requests? Irgendetwas stimmt da nicht... und ich habe weder Zeit noch Lust, dem auf den Grund zu gehen, da diese Methode für mich nicht (mehr) in Frage kommt.
|
|
||||
![]()
Hmm, also ich hab bei unserer meistbesuchten Seite etwas über 100 Regeln in der .htaccess. Bei durchschnittlich 800.000 Pageimpressions und über 2 Mio Hits am Tag haben wir damit noch keine echten Performance-Probleme. Die PIs gehen alle über PHP und bei jedem Zugriff gibt es verschiedene Datenbankzugriffe (MySQL auf dem selben Server).
Mit einem halbwegs leistungsstarkem Server mit ordentlich RAM muss man sich noch nicht so wahnsinnig Gedanken über ein paar Rewrite-Regeln machen. Ein vergessener Index bei einer häufig genutzten Datenbanktabelle kostet meist wesentlich mehr Zeit. Ob man die Regeln direkt in die httpd.conf oder in eine .htaccess packt, hängt auch ein wenig vom Einsatzzweck ab. Bei statischen Seiten mit vielen Verzeichnissen macht die httpd.conf schon Sinn, da Apache nicht so viele Verzeichnisse durchsuchen muss. Bei einer dynamischen Lösung bringt es vermutlich nicht so viel, da ja meist sowieso nur eine zentrale index.php aufgerufen wird. Warum in deinem Test bei 1000 Regeln so ein großer Unterschied ist, verstehe ich auch nicht. Irgendwas muss da schief laufen oder Apache hat ab einer bestimmten Anzahl wirklich ein größeres Problem mit der .htaccess. Mario |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Separierung browserspezifischer Regeln für spätere Wartung? | AndreasB | CSS | 10 | 08.10.2010 13:46 |
Regeln des Browserstylesheets in Firebug anzeigen? | AndreasB | CSS | 2 | 30.09.2010 20:42 |
CSS Regeln nicht anwenden | dows | CSS | 19 | 01.10.2008 00:49 |
[mysql-DB] Performance bei Struktur-Änderungen von großen Tabellen | mantiz | Serveradministration und serverseitige Scripte | 7 | 26.02.2008 13:02 |
Verschiedene Regeln für verschiedene Links | Philippp | CSS | 2 | 16.10.2004 02:00 |