我有一个自动填充字段搜索每个匹配,我让它每500毫秒发送一次请求。
但有时搜索控制器会在大约5秒后回答。问题是每个请求仍然在堆栈中,即使客户端不再搜索,所有请求也将完成。
这使得客户端等待基于ajax的进一步操作,直到所有先前的请求都将完成。 我试图实现的解决方案是在ajax中使用.abort()方法:
var currentRequest =null;
function keyUp(...){
if(currentRequest!=null){
currrentRequest.abort();
}
currentRequest = $.get(...);
但是尽管如此,在服务器端,控制器仍然收到所有待处理的请求,这些请求已被.abort()
取消。
有没有办法检测客户端连接状态以避免处理请求服务器端?
答案 0 :(得分:0)
在服务器端代码中,您可以使用Response.IsClientConnected
属性来确定请求是否已在客户端中止。因此,您可以释放当前用于不再需要的请求的资源。
我自己并没有真正使用它,但原则上我认为你可以实现你所追求的目标。
另一方面,你真的想优化你的控制器中大约5秒钟返回一个值的代码,在动态UI项目(如自动完成)上有这么多的延迟是不会给出一个良好的用户体验。