prefetch topmost articles on headlines load

master
Andrew Dolgov 18 years ago
parent 53761dda37
commit 961f4c7323

@ -195,11 +195,19 @@
print "<headlines id=\"$feed\"><![CDATA["; print "<headlines id=\"$feed\"><![CDATA[";
outputHeadlinesList($link, $feed, $subop, $view_mode, $limit, $cat_view, $topmost_article_ids = outputHeadlinesList($link, $feed, $subop,
$next_unread_feed, $offset); $view_mode, $limit, $cat_view, $next_unread_feed, $offset);
print "]]></headlines>"; print "]]></headlines>";
if (is_array($topmost_article_ids)) {
print "<articles>";
foreach ($topmost_article_ids as $id) {
outputArticleXML($link, $id, $feed, false);
}
print "</articles>";
}
print "<counters>"; print "<counters>";
getAllCounters($link, $omode); getAllCounters($link, $omode);
print "</counters>"; print "</counters>";

@ -3513,6 +3513,8 @@
function outputHeadlinesList($link, $feed, $subop, $view_mode, $limit, $cat_view, function outputHeadlinesList($link, $feed, $subop, $view_mode, $limit, $cat_view,
$next_unread_feed, $offset) { $next_unread_feed, $offset) {
$topmost_article_ids = array();
if (!$offset) $offset = 0; if (!$offset) $offset = 0;
if ($subop == "undefined") $subop = ""; if ($subop == "undefined") $subop = "";
@ -3627,7 +3629,11 @@
$id = $line["id"]; $id = $line["id"];
$feed_id = $line["feed_id"]; $feed_id = $line["feed_id"];
if (count($topmost_article_ids) < 5) {
array_push($topmost_article_ids, $id);
}
if ($line["last_read"] == "" && if ($line["last_read"] == "" &&
($line["unread"] != "t" && $line["unread"] != "1")) { ($line["unread"] != "t" && $line["unread"] != "1")) {
@ -3801,6 +3807,6 @@
print "</div>"; print "</div>";
return $topmost_article_ids;
} }
?> ?>

@ -44,9 +44,18 @@ function headlines_callback() {
if (xmlhttp.responseXML) { if (xmlhttp.responseXML) {
var headlines = xmlhttp.responseXML.getElementsByTagName("headlines")[0]; var headlines = xmlhttp.responseXML.getElementsByTagName("headlines")[0];
var counters = xmlhttp.responseXML.getElementsByTagName("counters")[0]; var counters = xmlhttp.responseXML.getElementsByTagName("counters")[0];
var articles = xmlhttp.responseXML.getElementsByTagName("article");
f.innerHTML = headlines.firstChild.nodeValue; f.innerHTML = headlines.firstChild.nodeValue;
if (articles) {
for (var i = 0; i < articles.length; i++) {
var a_id = articles[i].getAttribute("id");
debug("found id: " + a_id);
cache_inject(a_id, articles[i].firstChild.nodeValue);
}
}
if (counters) { if (counters) {
debug("parsing piggybacked counters: " + counters); debug("parsing piggybacked counters: " + counters);
parse_counters(counters, false); parse_counters(counters, false);

Loading…
Cancel
Save