Response.IsClientConnected有用吗?

rif*_*rte 11 asp.net

我想知道是否有人有经验,他们可以使用Response.IsClientConnected属性作为asp.net网站的性能优化共享.

我问的原因是我对现实生活场景中的效果有点怀疑.我理解在执行大型任务之前检查值的概念,但我无法看到这将是多么有用,因为客户端可以在任何时候断开连接.

Kel*_*sey 10

我认为主要用途是优化长流程的交付.例如,如果必须生成大型报告或其他内容,则可以在单独的线程中运行报告,然后定期检查用户是否仍然连接.如果没有,您可以终止这个长时间运行的进程,以便它不会不必要地运行,因为用户不再期待响应.

这有助于防止用户启动长进程,然后一遍又一遍地发出更多请求,因为他们可能认为它很慢或者某些东西.如果您没有进行此类检查,则可以根据所有请求对服务器征税,即使除了一个以外的所有请求都有效.这种情况可以通过只允许一个用户运行一个长时间运行的任务来处理,但它也有助于在多用户环境中确保您只花时间提供用户仍然连接并等待的请求响应.

注意:我之前从未实际使用过这个,这只是基于我对所读内容的基本理解.


Geo*_*kis 10

我在我的应用程序中广泛使用它,它可以为您节省大量资源.

试试这个:创建一个需要一段时间才能完成的页面,并在完成之前多次尝试刷新它.您将看到请求排队等待执行.想象一下,一个用户连接速度很慢并刷新他的页面很多次,以为这会获取页面(当所有用户连接时由于某些原因导致网站变得很慢,网站可能会死于资源这是一个非常常见的问题).

现在,更改它并在每个页面加载的开始时(或者在初始页面初)检查HttpContext.Current.Response.IsClientConnected以及在他未被连接的情况下抛出一个threadabord异常.您会看到,您的网站会更快回复.

实际上,我在页面上的任何重大操作之前检查客户端是否已连接,以防止不必要的执行.在生产环境中,我已经看到,特别是在系统变慢的情况下,这种验证将有很大帮助.