我正在构建一个站点的后端,它将在前端有多个“小部件”,需要实时更新。
现在,我只是有一个load方法,它用数据填充所有的小部件,显然是在页面加载上。我的问题是如何处理实时方面的进一步更新。
我曾想过只有多个ajax调用,可以每一秒左右查询一次服务,并返回最新的数据,但这似乎效率低下。
是否有一种方法可以从控制器"push“数据到视图?
发布于 2012-05-07 07:20:52
这取决于前端数据需要更新的频率。大多数页面都不需要不断更新。我不知道是否存在“最佳实践”阈值,但我认为最好的起点是使用Ajax进行15-20秒的更新。使您的Ajax调用快速和精益--如果没有更新,可能只返回空白。如果您需要更快的更新,请查看名为long polling
的内容。长轮询基本上是触发对服务器的ajax调用的地方,连接处于打开状态,直到有数据要发送。长轮询将占用更多的服务器资源,因为您将在打开连接和线程等待数据准备就绪时运行它们。使用ASP.NET,您还必须担心杀死长轮询线程,因为默认情况下,当浏览器关闭连接时,这些线程不会被杀死(例如,如果有人从页面导航)。
发布于 2012-05-07 07:13:50
也许你可以看看这个项目:https://github.com/SignalR/SignalR
ASP.NET SignalR是一个面向ASP.NET开发人员的新库,它使向应用程序添加实时web功能变得非常简单。什么是“实时网络”功能?这是一种让服务器端代码将内容实时推送到连接客户端的能力。
SignalR还提供了一个非常简单的高级API,用于在您的ASP.NET应用程序中执行服务器到客户端RPC (从服务器端.NET代码在客户端浏览器中调用.NET函数),以及添加用于连接管理的有用钩子,例如连接/断开事件、分组连接、授权。
(摘自http://signalr.net/ )
希望能帮上忙。
发布于 2012-05-07 07:27:30
我认为您的最佳选择是定期轮询服务器:
$(document).ready(function() {
setTimeout("getUpdate()", 30000);
function getUpdate()
{
// Make an ajax call here
}
});
这将要求每30秒更新一次。
https://stackoverflow.com/questions/10484501
复制