
Ich versuche, meine .htaccess-Datei zu optimieren, um Leistungsprobleme zu vermeiden.
In meiner .htaccess-Datei habe ich etwas, das so aussieht:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bigbadbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot2 [NC]
RewriteRule ^.* - [F,L]
Die erste Umschreiberegel (Bigbadbot) verarbeitet etwa 100 Anfragen pro Sekunde, während die beiden anderen Umschreiberegeln darunter nur wenige Anfragen pro Stunde verarbeiten.
Meine Frage ist: Da die erste Umschreibregel (Bigbadbot) etwa 99 % des Datenverkehrs verarbeitet, wäre es nicht besser, diese Regeln in zwei separate Regelsätze zu unterteilen?
Zum Beispiel:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bigbadbot [NC]
RewriteRule ^.* - [F,L]
RewriteCond %{HTTP_USER_AGENT} otherbot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} otherbot2 [NC]
RewriteRule ^.* - [F,L]
Was wäre in Bezug auf die Leistung besser? Hat das schon mal jemand getestet?
Antwort1
Es sollte im Grunde keinen Leistungsunterschied geben, da, sobald ein Cond in einem OR-Block übereinstimmt, der Rest nicht verarbeitet wird (das hätte keinen Sinn). Technisch gesehen wird aufgrund des OR-Blocks ohnehin schon ein bisschen Verarbeitung durchgeführt, daher wäre es vermutlich etwas effizienter, ihn aufzuteilen.
Wenn Sie Leistungsprobleme haben, würde ich meine Bemühungen auf andere Bereiche konzentrieren. Vielleicht auf die Profilerstellung der Anwendung, die Sie bereitstellen. Wenn die Anwendung gehostet wird, hat der Host möglicherweise einfach zu viele Websites auf demselben Server.