我正在運行一個Rails應用程序,該應用程序在此刻獲得大量流量,因此我開始使用頁面緩存來提高性能。到目前爲止,一切都像魅力一樣。但是當我試圖緩存搜索結果時,我遇到了一個奇怪的問題。在JS中對URL進行URL編碼以獲得有意義的URL和Rails頁面緩存
我的方法:
- 用於搜索和分頁(?/檢索查詢的=項&頁= 3變/搜索/項/ 3)
- 使用JavaScript來提交表單有意義的URL - 如果JS被禁用它退到舊錶(也可與我的路線,但沒有緩存)
我的代碼:
// Javascript
function set_search_action() {
window.location = '/search/' + escape(document.getElementById('query').value);
return false;
}
// HTML
<form action="/search" id="search_form" method="get" onSubmit="return set_search_action();">
<input id="query" name="query" title="Search" type="text" />
<input class="submit" name="commit" type="submit" value="Search" />
</form>
的問題
一切工作像 「術語」 單個單詞。但是當我搜索「term1 term2」時,表單會提交到/search/term1 term2/或/search/term1 term2/1。它應該被提交到/search/term1 + term2這就是我認爲的JS轉義函數應該做的。
到目前爲止,它也適用於開發模式中的空間。但我想這將成爲啓用緩存的生產模式中的問題(URL不應包含任何空格)。
我做錯了什麼想法?謝謝!
+1,以便詳細說明「%20」何時何地有效。 – Tomalak 2010-05-28 14:01:36