From 176a489e54557d2b3157145d09dd1c57c204bcf7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 11 Aug 2015 12:25:11 +0300 Subject: [PATCH] use batch-based catching up in cdmExpandArticle() to reduce server load --- js/viewfeed.js | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/js/viewfeed.js b/js/viewfeed.js index e84ed710..16b3bb1e 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -568,7 +568,7 @@ function moveToPost(mode, noscroll, noexpand) { console.log("cur: " + getActiveArticleId() + " next: " + next_id); if (mode == "next") { - if (next_id /*|| getActiveArticleId()*/) { + if (next_id || getActiveArticleId()) { if (isCdmMode()) { var article = $("RROW-" + getActiveArticleId()); @@ -1305,6 +1305,8 @@ function headlines_scroll_handler(e) { updateFloatingTitle(); } + catchupCurrentBatchIfNeeded(); + if (getInitParam("cdm_auto_catchup") == 1) { // let's get DOM some time to settle down @@ -1326,16 +1328,6 @@ function headlines_scroll_handler(e) { }); - if (catchup_id_batch.length > 0) { - window.clearTimeout(catchup_timeout_id); - - catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', 500); - - if (catchup_id_batch.length >= 10) { - catchupBatchedArticles(); - } - } - if (_infscroll_disable) { var child = $$("#headlines-frame div[id*=RROW]").last(); @@ -1370,6 +1362,8 @@ function catchupBatchedArticles() { try { if (catchup_id_batch.length > 0 && !_infscroll_request_sent && !_catchup_request_sent) { + console.log("catchupBatchedArticles: working"); + // make a copy of the array var batch = catchup_id_batch.slice(); var query = "?op=rpc&method=catchupSelected" + @@ -1573,8 +1567,12 @@ function cdmExpandArticle(id, noexpand) { if (old_offset > new_offset) $("headlines-frame").scrollTop -= (old_offset-new_offset); - if (!noexpand) - toggleUnread(id, 0, true); + if (!noexpand) { + if (catchup_id_batch.indexOf(id) == -1) + catchup_id_batch.push(id); + + catchupCurrentBatchIfNeeded(); + } toggleSelected(id); $("RROW-" + id).addClassName("active"); @@ -2430,6 +2428,17 @@ function updateFloatingTitle(unread_only) { } } +function catchupCurrentBatchIfNeeded() { + if (catchup_id_batch.length > 0) { + window.clearTimeout(catchup_timeout_id); + catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', 1000); + + if (catchup_id_batch.length >= 10) { + catchupBatchedArticles(); + } + } +} + function cdmFooterClick(event) { event.stopPropagation(); } \ No newline at end of file -- 2.39.2