
我正在嘗試優化我的 .htaccess 檔案以避免效能問題。
在我的 .htaccess 檔案中,我有一些看起來像這樣的內容:
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]
第一個重寫規則 (bigbadbot) 每秒處理大約 100 個請求,而其下面的其他兩個重寫規則每小時僅處理幾個請求。
我的問題是,由於第一個重寫規則 (bigbadbot) 處理大約 99% 的流量,因此將這些規則放入兩個單獨的規則集中是否會更好?
例如:
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]
就性能而言,什麼會更好?有人曾經對此進行過基準測試嗎?
答案1
它基本上應該沒有性能差異,因為一旦一個 Cond 在 OR 區塊中匹配,其餘的就不會被處理(沒有意義)。從技術上講,首先要根據 OR 區塊完成一些處理,因此我認為將其分解會更加有效。
如果您遇到效能問題,我會將精力集中在其他地方。也許可以分析您正在服務的任何應用程式。此外,如果它是託管的,則主機可能在同一伺服器上有太多網站。