stackoverflow では、stackexchange 通知が jquery.load() または jquery.ajax() で 10 ~ 15 秒ごとにリロードされていると想定しています。
ただし、これをテストしたところ、Google Chrome コンソール内で数回ごとにエラーが返されました。
これを最適化する方法はありますか? また、stackoverflow が通知をリロードするように、10 ~ 15 秒ごとにデータベースに圧力をかけるのは良い考えですか?
これが私の機能です
function reloadnotifications() {
a1 = $("#msgrfrsh");
a2 = $("#mybadrfrsh");
a3 = $("#yrpgrfrsh");
$.ajax({
url: '/notify.php?a',
cache: 'false',
success: function(response){
a1.html(response)
}
});
$.ajax({
url: '/notify.php?b',
cache: 'false',
success: function(response) {
a2.html(response)
}
});
$.ajax({
url: '/notify.php?c',
cache: 'false',
success: function(response) {
a3.html(response)
}
});
n = notifications();
if (n>0) {
//n is past zero, new notifications needed.
if ($("#newnotifications").css('opacity') == 1) {
//opacity is equal to 1, so refresh IF n is higher than current value.
if (n > parseInt($("#newnotifications").html())) {
$('#newnotifications').css({'opacity':'0','margin-top': '-55px'})
.html(notifications())
.animate({'margin-top': '-16px','opacity':'1'});
} else {
// leave it for now
}
} else {
//notifications is already invisible, so fade it in. IF the members bar height is 28px
if ($("#chat").height() == '28px') {
$('#newnotifications').css({'opacity':'0','margin-top': '-55px'})
.html(notifications())
.animate({'margin-top': '-16px','opacity':'1'});
} else{
//leave it for now
alert("we got here");
}
}
} else {
//notifications have all been read, so a fade out is neccessary.
$('#newnotifications').animate({'opacity':'0','margin-top': '-55px'});
}
//thats the end!
}
setInterval("reloadnotifications()",15000);