2012-03-09 62 views
1

我正在創建頁面管理員設置。頁面可能包含子頁面,並且我有許多功能來創建尾部網址字符串。無論如何,只是想知道這裏的優點和缺點。速度明智或任何東西我真的不認爲(除了可能多一點/與其他路線匹配靈活性以下):Rails靜態頁面路徑vs:constraints => {:url => /.+/} - 優點和缺點

選項1 - 匹配一切網頁:

get ':url' => 'pages#show', :constraints => { :url => /.+/ } 
# with @page = Page.find_by_url("/"+params[:url]) in my controller 

選項2 - 每個後靜態地圖路線頁面,並重新加載路線保存

if Page.table_exists? # Otherwise on rake db:migrate this file will be called and throw an error 
    Page.all.each do |page| 
    match page.url, :controller => 'pages', :action => 'show', :page_id => page.id 
    end 
end 
# Then after pages save it calls MyApp::Application.reload_routes! 

無論哪種方式可以很好的工作..只是好奇。

回答

1

選項-1是上級,實際上將正常工作,無論部署環境中,選擇-2將在任何不平凡的部署失敗。

假設您有兩個Web服務器進程,P1P2;它們可能位於同一臺計算機上,單獨的計算機上,也可能位於同一臺計算機上的單獨虛擬機中。假設有些人保存了一個剛剛發生的新頁面P1;然後P1將更新數據庫(P1P2之間的共享資源)並重建其路由表。但現在P1有正確的路由信息​​,但P2卡住了舊的,因爲沒有人告訴它,有什麼改變。

你可以設置一些輪詢或廣播系統,但是這也只是一堆毫無意義的複雜性時,選項-1會工作得很好原樣。

+0

呀好點。我不會那樣做的。但是,選項1使用較少的依賴性,並且更簡單一些。我想速度可能是另一回事......但我相信它就像一個快速的..找到一個ID與一個網址。 – wejrowski 2012-03-20 19:20:14