2011-03-18 39 views
3

我們正在建立一個網站,希望每天能夠服務2k-5k的獨特用戶。 因爲該網站是面向阿拉伯喇叭我們配置的.htaccess文件 做重寫規則,如:600 +模式重寫規則,用apache可以嗎?

RewriteRule ^عربية$ arabic.php [L] 

問題是,我們有600條重寫規則類似上面。 這是好的與Apache?或者這是否會讓我的服務器真的很慢? [L]標籤有幫助嗎?

+3

請記住,Apache需要解析每個請求的.htaccess。你應該將重寫規則移動到你的VirtualHost配置文件(通常在httpd.conf中),它只能被解析一次:當apache啓動時。 – Maerlyn 2011-03-18 08:05:47

+0

[你以前的問題](http://stackoverflow.com/questions/5302133/htaccess-rules-efficent-way)? – Gumbo 2011-03-18 08:10:48

+0

@Gumbo它縮放比例從40到600 :) – Tom 2011-03-18 08:11:38

回答

7

如果您只是靜態關鍵字,我寧願使用hash map而不是單獨的規則。因爲散列映射的查找操作的複雜性與O(n)相反,因此對於n規則而言是O(1)。

所以你可以做這樣的事情:

RewriteMap arabic-keywords dbm:/path/to/file/arabic-keywords.map 

最初的關鍵字地圖格式的純文本文件:

عربية arabic.php 
الأغاني songs.php 
الفنان artist.php 

然後使用httxt2dbm打開純文本文件轉換成哈希映射:

httxt2dbm -i arabic-keywords.txt -o arabic-keywords.map 

並且使用該地圖:

RewriteCond %{arabic-keywords:$0} .+ 
RewriteRule .+ %0 [L] 

作爲散列重寫映射返回一個空字符串,如果沒有找到匹配,條件將只會被滿足,如果發現匹配。但請注意,RewriteMap不能用於.htaccess文件context

+0

你已經知道我的問題現在就放棄了,我需要選擇has map或httpd.conf方式。你最後的決定是什麼? :) – Tom 2011-03-18 08:21:18

+1

@Tom:如果它不是最優的,我不會推薦哈希映射。 – Gumbo 2011-03-18 08:24:37

+0

謝謝Gumbo另一個深刻的答案! – Tom 2011-03-18 08:27:54

0

我正在維護一個具有類似vistor費率的網站,目前大約有500條mod重寫規則。他們對整體表現影響不大。

[L]標籤確實對此性能有所幫助。尤其是如果您將最常用的規則保留在頁面頂部。

+0

很高興聽到有同樣問題的人。 @ pinusngra否則說,有人可以添加另一種意見? – Tom 2011-03-18 08:16:23

+0

嗯,我同意@pinusnegra可以實現更高效的工作。只要指出這不一定是主要瓶頸。 – gnur 2011-03-18 08:19:48

1

我認爲這對性能和可維護性來說太過分了。

我會做一個重寫規則來將所有相關請求轉發到arabic.php,然後使用php處理$ _SERVER ['REQUEST_URI']以獲得更多動態路由。

這會更易於維護。

+0

這就是維基百科的神奇之處,但我們的網站不是可擴展的,但感謝您的2美分朋友。 – Tom 2011-03-18 08:22:51