我想开发一个基于ASP.NET的再线聊天系统,可是发现如果每次都刷新页面效率很低,而且服务器负荷也变大了.偶然看到了GOOGLE的这个页面,信息如下:
Don't throw anything away.
Over [2647.678142] megabytes (and counting) of free storage so you'll never need to delete another message其中[]里面的就是不断跳动的自由空间大小.如果看浏览器,发现根本没有刷新.
我想在ASP.NET里面实现这个功能,请教各位高手
Don't throw anything away.
Over [2647.678142] megabytes (and counting) of free storage so you'll never need to delete another message其中[]里面的就是不断跳动的自由空间大小.如果看浏览器,发现根本没有刷新.
我想在ASP.NET里面实现这个功能,请教各位高手
<p><font size=-1><b>Don't throw anything away.</b><br>
Over <span id=quota>2000</span> megabytes (and counting) of free storage so you'll never need to delete another message.</font></p>就是说大小是通过JAVASCRIPT修改ID为QUOTA的SPAN来在客户端修改的.
这句下面还有一行是一个脚本:
<script>
<!--
quota = el("quota");
updateQuota();
// -->
</script>我顺着updateQuota()找发现在HEAD区域的一个大脚本区域里面就是要的东西了.可是我JS不好,看不懂,下面是代码,能帮小弟解释一下么?<script type=text/javascript src="https://mail.google.com/mail?view=page&name=browser"></script><script type=text/javascript>
<!--if (top.location != self.location) {
top.location = self.location.href;
}function SetGmailCookie(name, value) {
document.cookie = name + "=" + value + ";path=/;domain=.google.com";
}function lg() {
var now = (new Date()).getTime(); var cookie = "T" + start_time + "/" + start_time + "/" + now;
SetGmailCookie("GMAIL_LOGIN", cookie);
}function gaiacb_onLoginSubmit() {
lg();
if (!fixed) {
FixForm();
}
return true;
}function StripParam(url, param) {
var start = url.indexOf(param);
if (start == -1) return url;
var end = start + param.length; var charBefore = url.charAt(start-1);
if (charBefore != '?' && charBefore != '&') return url; var charAfter = (url.length >= end+1) ? url.charAt(end) : '';
if (charAfter != '' && charAfter != '&') return url; if (charBefore == '&') {
--start;
} else if (charAfter == '&') {
++end;
}
return url.substring(0, start) + url.substring(end);
}var fixed = 0;function FixForm() {
if (is_browser_supported) {
var form = el("gaia_loginform");
if (form && form["continue"]) {
var url = form["continue"].value;
url = StripParam(url, "ui=html");
url = StripParam(url, "zy=l");
form["continue"].value = url;
}
}
fixed = 1;
}function el(id) {
if (document.getElementById) {
return document.getElementById(id);
} else if (window[id]) {
return window[id];
}
return null;
}var CP = [
[ 1122879600000, 2450 ],
[ 1125558000000, 2550 ],
[ 1136102400000, 2950 ]
];var quota;var ONE_PX = "https://mail.google.com/mail/images/c.gif?t=" +
(new Date()).getTime();function LogRoundtripTime() {
var img = new Image();
var start = (new Date()).getTime();
img.onload = GetRoundtripTimeFunction(start);
img.src = ONE_PX;
}function GetRoundtripTimeFunction(start) {
return function() {
var end = (new Date()).getTime();
SetGmailCookie("GMAIL_RTT", (end - start));
}
}function MaybePingUser() {
var f = el("gaia_loginform");
if (f.Email.value) {
new Image().src = 'https://mail.google.com/mail?gxlu=' +
encodeURIComponent(f.Email.value) +
'&zx=' + (new Date().getTime());
}
}function OnLoad() {
gaia_setFocus(); MaybePingUser();
el("gaia_loginform").Passwd.onfocus = MaybePingUser; LogRoundtripTime();
if (!quota) {
quota = el("quota");
updateQuota();
}
}function updateQuota() {
if (!quota) {
return;
}
var now = (new Date()).getTime();
var i;
for (i = 0; i < CP.length; i++) {
if (now < CP[i][0]) {
break;
}
}
if (i == 0) {
setTimeout(updateQuota, 1000);
} else if (i == CP.length) {
quota.innerHTML = CP[i - 1][1];
} else {
var ts = CP[i - 1][0];
var bs = CP[i - 1][1];
quota.innerHTML = format(((now-ts) / (CP[i][0]-ts) * (CP[i][1]-bs)) + bs);
setTimeout(updateQuota, 1000);
}
}
var PAD = '.000000';
function format(num) {
var str = String(num);
var dot = str.indexOf('.');
if (dot < 0) {
return str + PAD;
} if (PAD.length > (str.length - dot)) {
return str + PAD.substring(str.length - dot);
} else {
return str.substring(0, dot + PAD.length);
}
} // -->
</script>
整体是AJAX