作者JYHuang (夏天到了,冷不起來了說)
看板Ajax
標題[討論] 前陣看到一個Ajax搜尋的Case
時間Sat May 16 17:51:49 2009
這個案子比較特殊的是,
他頁面上有一堆checkbox,每當選取有所變動的時候
就會觸發ajax去執行PHP做資料庫的Query。
問題在於查詢執行時,頁面上的checkbox還是可以選取的
要是查詢的資料比較費時間,ajax還沒完全回傳時,
而使用者又再去變動checkbox。
這樣似乎會造成Query的重複執行,造成MySQL的Loading很重
而且這樣Query回傳的結果似乎相互影響的樣子?
先查詢的會因為回傳慢而後顯示?
在PHP那方面有取消資料庫Query的功能嗎?
client這方面該怎麼防範這種
重複執行同一支ajax造成的問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.153.125
1F:→ TonyQ:一個查詢進行中時先lock住 ui , 不要讓使用者改就好. 05/16 18:03
2F:→ TonyQ:多個ajax同時進行中時 , 的確是不能保證順序沒錯. 05/16 18:03
3F:推 TonyQ:不然就是你讓checkbox的反應時間慢一點 , ex.兩秒後才反應 05/16 18:14
4F:→ TonyQ:這段期間使用者的異動讓它動這樣. 總的來說 ,減少request跟 05/16 18:14
5F:→ TonyQ:提高 mysql 查詢的效能 (index,減少查詢複雜度) 雙管齊下. 05/16 18:15
6F:→ TonyQ:才能得到比較好的效益. 05/16 18:15
7F:→ JYHuang:效能會低我猜主要是因為資料相當多 05/16 19:41
※ JYHuang:轉錄至看板 PHP 05/16 19:42
8F:→ fillano:另一個方法是用queue來管理這些ajax動作,讓他保證循序執 05/16 20:43
9F:→ fillano:行。不過我怕如果多了,說不定放在queue裡面的東西越來越 05/16 20:44
10F:→ fillano:多...所以lock住ui是第一個選擇,除非對方要求... 05/16 20:45
11F:→ JYHuang:我提出的方案也是lock ui,不過不被接受 = =" 05/16 20:54