在 Geeking with Greg 這看到關於 Web Accelerator 如果使用 Prefetching 會造成的問題:Web acceleration without prefetching。
有些網站設計上有些瑕疵,會用 <a href="blah.php?action=suicide">刪除帳號</a> 這種方法來傳指令,然後自以為很聰明的用 Javascript 跳出一個 Yes/No 的視窗確認。這種網站在遇到 Prefetching 時就會... 舉個例子說,Group.NCTU.edu.tw 的 logout 就是一個例子。
比較「中性」的方法是放棄這麼激烈的作法,改用 DNS cache,然後先連線到對方主機,但先不要送資料。這樣可以省下 DNS 查詢的時間以及建立 TCP Connection 的時間。只比原來 Prefetching 的方法少了最後抓資料的時間,但卻讓穩定性上升不少。
:~~~~~~~~~~
我在寫公司的網頁都是 a href='blah.php?delete=id' onclick='return confirm(....);' 這樣子... (默)
Rails 裡面的解法,是使用一個叫做 button_to 的 function,來取代 link_to 這個 function。
用 link_to 的話,會產生像這樣的 URL:
Delete
用 button_to 的話,則是
我想這樣可以有效防止 prefetch 而衍生出的問題。
不過看了就知道,要在非 Rails 系統上這麼做的話,Server 端也要能夠正確處理才是。
Rails 裡面的解法,是使用一個叫做 button_to 的 function,來取代
link_to 這個 function。用 link_to 的話,會產生像這樣的 URL:
<a href="/data/delete/123">Delete</a>
用 button_to 的話,則是
<form action="/data/delete/3" method="post">
<div><input type="submit"/></div>
</form>
我想這樣可以有效防止 prefetch 而衍生出的問題。
不過看了就知道,要在非 Rails 系統上這麼做的話,Server 端也要能夠正確處理才是。