2008-08-25 70 views
22

我知道mod-rewrite有很多積極的東西。但是有沒有消極的?顯然,如果你的規則寫得不好,你會遇到問題。但是如果你有一個高容量的站點,並且你經常使用mod-rewrite,它會對性能產生重大影響嗎?我在Google上快速搜索了一些基準測試結果,結果發現並不多。使用Mod-Rewrite會有什麼負面影響?

回答

34

我在使用mod_rewrite的網站上獲得數百萬/個點擊次數/月沒有任何重大性能問題。根據你的規則,你必須知道首先應用哪些重寫。

使用mod_rewrite最有可能比用當前語言解析URL更快。

如果您真的擔心性能,請不要使用.htaccess文件,這些文件很慢。將所有重寫規則放入您的Apache配置中,該配置僅在啓動時讀取一次。 .htaccess文件會在每個請求中重新進行解析,以及.htaccess父文件夾中的文件。

+26

好的答案,但我應該指出,*啓用* .htaccess文件是問題,而不是使用它們。如果您不完全禁用它們,即使您沒有任何單個.htaccess文件,仍然會爲每個路徑段提供stat-hit。 – 2008-09-17 15:03:37

+3

使用`AllowOverride None`禁用.htaccess。 – NateS 2015-02-19 12:37:53

3

如果你擔心apache的性能,有一點需要考慮,如果你有很多重寫規則,就是使用「skip」標誌。這是跳過規則匹配的一種方法。所以,無論在匹配上花費的開銷都會被保存下來。

要小心,雖然我在一個項目上使用了「skip」標誌,並且使維護變得很痛苦,因爲它取決於文件中寫入內容的順序。

7

要回應Ryan上面所說的,.htaccess中的規則與在配置文件中使用規則相比,可能會在繁忙的站點上真正地損害您的加載時間。我們最初嘗試了這個(約6000萬頁/月),但是直到我們的服務器開始吸菸時才持續很長時間:)

在您的配置中擁有規則的明顯缺點是您必須重新加載配置規則。

最後一個標記(「L」)對於加快規則的執行速度非常有用,一旦您的訪問規則更加頻繁,並且首先進行評估。如果你有一套很長的規則,它可以使維護更加棘手 - 一天早上我浪費了幾個非常令人沮喪的時間,因爲我正在編輯規則列表的中間,並且有一個陷入了超過限制的頂部意!

我們也很難找到相關的基準測試,並最終制定了我們自己的內部測試套件。一旦我們的規則被整理出來,正確地排序並進入我們的Apache conf,我們就沒有發現很多負面的性能影響。

相關問題