【发布时间】:2025-12-17 10:45:01
【问题描述】:
注意:我将投票系统替换为
websockets,但我仍然想知道上述问题的答案。
我正在尝试减少 传统轮询消息系统的 AJAX 请求,但我不知道如何获取它:
$chatbox = $("#chatbox");
setInterval(function(){
// I send the sha1 of the chatbox html content to verify changes.
$.post("post.php", {checksum: hex_sha1($chatbox.html())}, function (data, status) {
switch (status) {
case "success":
// If version of "post.php" checksum is different than mine (there are changes) data isn't empty; I assign data as the new content of the chatbox.
if(data){
$chatbox.html(data);
$chatbox.scrollTop($chatbox[0].scrollHeight);
}
break;
default:
$chatbox.html('Connection error...');
break;
}
});
}, 1000);
好吧,正如你所见,我使用 setInterval() 和 1000 毫秒作为参数,并且感谢 SHA1 校验和系统,我可以将所有 AJAX 响应的大小减小到 343 B(除了“ post.php" 显然会返回一些新消息)
问题:
-
为什么我所有的 AJAX 请求都大小相同(
343 B)即使我将 SHA1 (20 B) 哈希更改为 MD5 (16 B)? p> -
我的校验和变量 (SHA1) 占用
20 B:剩下的在哪里323 B? -
我可以进一步减少 AJAX 请求的大小吗? 如何?
注意:
hex_sha1()是 Javascript 的 SHA1 算法的实现:http://pajhome.org.uk/crypt/md5/sha1.html
注意 2:
不幸的是,我不能使用像
node.js这样的服务器推送技术。我只能使用 Javascript(客户端)和 PHP。
【问题讨论】:
-
为什么不使用 websockets?
-
@JayBlanchard 据我所知,
websockets尚未得到所有浏览器的支持。我错了吗? -
所有现代浏览器都以一种或另一种形式支持它们。
-
@JayBlanchard 我只是假装接受一个答案,不要误会我的意思。
-
谢谢大家;我用 websockets 替换了我的投票系统,但 我仍然想知道上面三个问题的答案,所以我不会关闭我的问题。
标签: javascript php jquery xmlhttprequest ajax-polling