我想知道谷歌翻译器(translate.google.com)如何在没有回发的情况下节省用户率,还有其他类似的行为(例如在堆栈溢出中)用户查看没有回发(一切都如此快速和流畅)但那里是一些数据库交互,例如在 Stack Overflow 中投票问题/答案或评论,是 Ajax 吗?还是只是 JavaScript?真是太好了,如何使用VS2010、C#、ASP.NET 实现这些类型的操作?
谢谢
我想知道谷歌翻译器(translate.google.com)如何在没有回发的情况下节省用户率,还有其他类似的行为(例如在堆栈溢出中)用户查看没有回发(一切都如此快速和流畅)但那里是一些数据库交互,例如在 Stack Overflow 中投票问题/答案或评论,是 Ajax 吗?还是只是 JavaScript?真是太好了,如何使用VS2010、C#、ASP.NET 实现这些类型的操作?
谢谢
这有两个方面:
它是向服务器发送 ajax 消息的 JavaScript 代码。对话的服务器端可以使用您喜欢的任何技术来实现(Web 的乐趣之一,客户端和服务器端是分离的)。具体来说,页面加载了当时的投票信息,当您单击投票按钮时,JavaScript 代码会立即更新投票显示,然后向服务器发送一个 ajax 请求来记录投票(因此是即时的视觉反馈)。通常,该请求会在合理的时间内完成,并且一切正常。有时会出现处理请求的错误(可能是 HTTP 错误——例如,出现问题——或者服务器拒绝投票的逻辑错误);发生这种情况时,您会看到一条错误消息,并且代码会恢复投票的显示(因为它没有在服务器上注册)。
在 Stack Exchange 的案例中,他们在 JavaScript 代码中使用了jQuery库。为了让您了解这是多么容易,这里是使用 jQuery 的直接 ajax 调用的客户端:
$.ajax({
url: "/path/to/server/resource",
method: "POST",
data: {action: "voteup"},
success: function(data) {
// Do something with the successful response from the server,
// which can send back data
},
error: function(jqXHR, textStatus, errorThrown) {
// Do something with the error that occurred
}
});
服务器端只是以任何有意义的方式响应 POST 操作。
该示例使用 jQuery,但还有许多其他 JavaScript 库也使 ajax 变得非常简单,例如YUI、Closure、 Prototype或其他几个库中的任何一个。jQuery 是目前(迄今为止)最流行的基于浏览器的 JavaScript 任务库,但它不是唯一的。
我只能从外部谈论这个,但我希望 Stack Exchange 使用几种“彗星”技术中的任何一种(网络套接字、长轮询、隐藏iframes
等)。
我希望网络套接字是首选。例如,如果我在打开网络选项卡的情况下使用 Chrome 打开一个问题,我会看到一个请求ws://sockets.ny.stackexchange.com/
,并且ws
是与网络套接字关联的有线协议 RFC6455 涵盖的两个方案之一wss
(另一个是SSL 安全版本) . Web 套接字的乐趣在于,它们正式且健壮地允许客户端和服务器之间持久的双向通信,允许服务器在适当的时候将数据推送到客户端。
由于 IE9 和更早版本的明显遗漏, Web 套接字现在得到了相当好的支持,因此对于没有它们的浏览器,SE 可能会退回到上述链接中提到的一种或多种旧技术。
对我来说,为 Dapper 替换实体框架效果很好。速度有显着提高。