我有一个jQuery函数,每隔10秒动态调查我的Django视图,看看是否添加了新数据:
setInterval(function() {
$.get('pollNewEntries', {}, newEntrySuccess)
}, 10000);
function newEntrySuccess(result) {
$.each(result, function(index, value) {
var dateString = new Date(value.fields.pubDate);
dateString = dateString.toDateString() + " - " + dateString.toTimeString();
var title = "<h1>" + value.fields.title + "</h1>";
var authorAndDate = "<h4>" + value.fields.author +
" - <time datetime='>" + value.fields.pubDate + "'>" + dateString +
"</time>" + "</h4>";
var text = "<div class='cutText'>" + value.fields.text; + "</div>";
var html = "<article class='text'>" + title + authorAndDate + text + "</article>";
$('#mainLeft').prepend(html);
});
}
});
这样可行,但我保守地构建了轮询间隔和视图以考虑任何延迟时间,因此对于两个或多个单独的Ajax调用,视图通常会返回与“new”相同的文章。
我想要做的是将之前遇到的任何新文章的ID保存到某种集合中。然后我可以在每次Ajax调用返回结果时查询该集合,确保之前没有遇到过该文章,并且只有在它是新的时才进行。
我可以设置一个简单的全局列表(或一个自定义的集/字典,尽管文章的数量可能很小,所以性能上没有太大差异),或者我可以做到这一点使用cookies,但我认为cookie开销对于这个应用程序来说有点过分,我知道全局在javascript中特别有毒。在这种情况下,还是其他任何建议,或者是全球性的最佳选择?