diff options
author | Andrew Dolgov <[email protected]> | 2007-05-15 06:21:19 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2007-05-15 06:21:19 +0100 |
commit | fed4387da18b4aedf6b246d4f964b23c46b9dba9 (patch) | |
tree | 60e591aa72125d24128db9446e3f25306cbce242 /viewfeed.js | |
parent | e097e8be75440dd03e7f36ff8a1d0e01725295c3 (diff) |
update prefetching store, add expiry
Diffstat (limited to 'viewfeed.js')
-rw-r--r-- | viewfeed.js | 31 |
1 files changed, 23 insertions, 8 deletions
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(); + } } |