From fed4387da18b4aedf6b246d4f964b23c46b9dba9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 15 May 2007 06:21:19 +0100 Subject: [PATCH] update prefetching store, add expiry --- functions.js | 6 +++--- viewfeed.js | 31 +++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/functions.js b/functions.js index 09f430096..0677308f4 100644 --- a/functions.js +++ b/functions.js @@ -1687,9 +1687,9 @@ function getRelativePostIds(id) { if (i > 1) ids.push(rows[i-2].id.replace("RROW-", "")); if (i > 2) ids.push(rows[i-3].id.replace("RROW-", "")); - if (i < rows.length) ids.push(rows[i+1].id.replace("RROW-", "")); - if (i < rows.length-1) ids.push(rows[i+2].id.replace("RROW-", "")); - if (i < rows.length-2) ids.push(rows[i+3].id.replace("RROW-", "")); + if (i < rows.length-1) ids.push(rows[i+1].id.replace("RROW-", "")); + if (i < rows.length-2) ids.push(rows[i+2].id.replace("RROW-", "")); + if (i < rows.length-3) ids.push(rows[i+3].id.replace("RROW-", "")); return ids; } diff --git a/viewfeed.js b/viewfeed.js index f5791eaf7..4cba45ef8 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -738,16 +738,21 @@ function cdmWatchdog() { function cache_inject(id, article) { - if (!article_cache[id]) { + if (!cache_check(id)) { debug("cache_article: miss: " + id); var cache_obj = new Array(); var d = new Date(); + + cache_obj["id"] = id; cache_obj["entered"] = d.getTime() / 1000; cache_obj["data"] = article; + cache_obj["last_access"] = 0; - article_cache[id] = cache_obj; + //article_cache[id] = cache_obj; + + article_cache.push(cache_obj); } else { debug("cache_article: hit: " + id); @@ -755,17 +760,27 @@ function cache_inject(id, article) { } function cache_find(id) { - if (typeof article_cache[id] != 'undefined') { - return article_cache[id]["data"]; - } else { - return false; + for (var i = 0; i < article_cache.length; i++) { + if (article_cache[i]["id"] == id) { + var d = new Date(); + article_cache[i]["last_access"] = d.getTime() / 1000; + return article_cache[i]["data"]; + } } + return false; } function cache_check(id) { - return typeof article_cache[id] != 'undefined'; + for (var i = 0; i < article_cache.length; i++) { + if (article_cache[i]["id"] == id) { + return true; + } + } + return false; } function cache_expire() { - /* TODO */ + while (article_cache.length > 30) { + article_cache.shift(); + } }