[討論] 前陣看到一個Ajax搜尋的Case

看板Ajax作者 (夏天到了,冷不起來了說)時間16年前 (2009/05/16 17:51), 編輯推噓1(1010)
留言11則, 3人參與, 最新討論串1/6 (看更多)
這個案子比較特殊的是, 他頁面上有一堆checkbox,每當選取有所變動的時候 就會觸發ajax去執行PHP做資料庫的Query。 問題在於查詢執行時,頁面上的checkbox還是可以選取的 要是查詢的資料比較費時間,ajax還沒完全回傳時, 而使用者又再去變動checkbox。 這樣似乎會造成Query的重複執行,造成MySQL的Loading很重 而且這樣Query回傳的結果似乎相互影響的樣子? 先查詢的會因為回傳慢而後顯示? 在PHP那方面有取消資料庫Query的功能嗎? client這方面該怎麼防範這種 重複執行同一支ajax造成的問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.153.125

05/16 18:03, , 1F
一個查詢進行中時先lock住 ui , 不要讓使用者改就好.
05/16 18:03, 1F

05/16 18:03, , 2F
多個ajax同時進行中時 , 的確是不能保證順序沒錯.
05/16 18:03, 2F

05/16 18:14, , 3F
不然就是你讓checkbox的反應時間慢一點 , ex.兩秒後才反應
05/16 18:14, 3F

05/16 18:14, , 4F
這段期間使用者的異動讓它動這樣. 總的來說 ,減少request跟
05/16 18:14, 4F

05/16 18:15, , 5F
提高 mysql 查詢的效能 (index,減少查詢複雜度) 雙管齊下.
05/16 18:15, 5F

05/16 18:15, , 6F
才能得到比較好的效益.
05/16 18:15, 6F

05/16 19:41, , 7F
效能會低我猜主要是因為資料相當多
05/16 19:41, 7F
JYHuang:轉錄至看板 PHP 05/16 19:42

05/16 20:43, , 8F
另一個方法是用queue來管理這些ajax動作,讓他保證循序執
05/16 20:43, 8F

05/16 20:44, , 9F
行。不過我怕如果多了,說不定放在queue裡面的東西越來越
05/16 20:44, 9F

05/16 20:45, , 10F
多...所以lock住ui是第一個選擇,除非對方要求...
05/16 20:45, 10F

05/16 20:54, , 11F
我提出的方案也是lock ui,不過不被接受 = ="
05/16 20:54, 11F
文章代碼(AID): #1A3eotbu (Ajax)
文章代碼(AID): #1A3eotbu (Ajax)