作者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