mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-16 00:45:55 +00:00
prefetch topmost articles on headlines load
This commit is contained in:
12
backend.php
12
backend.php
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user