我想在注册页面上显示我的客户的平均注册时间(以秒为单位)。平均时间将基于使用cookie的最近15次注册。
以下是我想在注册页面上使用的示例文本:
注册大约需要 3.1秒。这是平均值 最近15次注册。
有什么建议吗?
答案 0 :(得分:2)
您需要通过GET请求从加载注册页面检查一个会话范围内的时间,直到使用POST请求发布注册数据。而且需要在服务器端完成。
这样的事情:
public partial class _Default : System.Web.UI.Page
{
private static DateTime registrationStart;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
registrationStart = DateTime.Now;
}
}
protected void Register_Click(object sender, EventArgs e)
{
TimeSpan registrationTimeSpan = DateTime.Now - registrationStart;
this.StoreRegistrationTime(registrationTimeSpan); // store registration date to DB
}
}
答案 1 :(得分:0)
跟踪客户端的时间比跟踪服务器端的时间更准确,因为跟踪服务器端的时间并不考虑带宽延迟或加载时间。如果用户连接速度较慢,移动连接或从其他国家/地区访问该网站,如果严格跟踪服务器端,则可能会严重影响计时结果。
在按钮的点击事件中,只需将点击时间设置为。 。
$('button.register').click(function(evt) {
window.myApp.startTime = new Date().getTime(); //Milliseconds since midnight Jan 1, 1970
});
如果您要提交您的用户输入以通过ajax注册成功通话,您可以设置另一个时间(window.myApp.endTime
),就像点击事件一样,然后找到2倍的差异,以毫秒为单位来获取你正在寻找的精确度。
window.myApp.registrationTime = window.myApp.endTime - window.myApp.startTime
需要将 window.myApp.registrationTime
发送回服务器,如上所述,只有服务器能够以您希望的方式跟踪最近15次注册。
答案 2 :(得分:0)
正如已经提到的,你不能真正使用cookie,因为它们存储在用户的机器上,而不是服务器上。您可以做的是获取ready
事件触发的时间,然后获取表单提交的时间:
$(document).ready(function() {
var startTime = (new Date()).getTime();
$("#yourForm").submit(function() {
var endTime = (new Date()).getTime(),
totalTime = endTime - startTime;
});
});
然后,您可以将时间存储在隐藏的input
中,并将其与表单一起提交。将时间与用户注册数据一起存储在数据库中,只需查询数据库中最近15次注册的平均值即可获得所需数据。