Performance improvements when displaying local posts

This commit is contained in:
Michael 2024-04-17 19:16:47 +00:00
parent bae1f63424
commit c82a1ed467
16 changed files with 1101 additions and 28 deletions

View file

@ -1003,8 +1003,6 @@ class Feed
{
$stamp = microtime(true);
$cachekey = 'feed:feed:' . $owner['nickname'] . ':' . $filter . ':' . $last_update;
// Display events in the user's timezone
if (strlen($owner['timezone'])) {
DI::app()->setTimeZone($owner['timezone']);
@ -1012,15 +1010,6 @@ class Feed
$previous_created = $last_update;
// Don't cache when the last item was posted less than 15 minutes ago (Cache duration)
if ((time() - strtotime($owner['last-item'])) < 15 * 60) {
$result = DI::cache()->get($cachekey);
if (!$nocache && !is_null($result)) {
Logger::info('Cached feed duration', ['seconds' => number_format(microtime(true) - $stamp, 3), 'nick' => $owner['nickname'], 'filter' => $filter, 'created' => $previous_created]);
return $result['feed'];
}
}
$check_date = empty($last_update) ? '' : DateTimeFormat::utc($last_update);
$authorid = Contact::getIdForURL($owner['url']);
@ -1046,9 +1035,9 @@ class Feed
$params = ['order' => ['received' => true], 'limit' => $max_items];
if ($filter === 'posts') {
$ret = Post::selectThread(Item::DELIVER_FIELDLIST, $condition, $params);
$ret = Post::selectOriginThread(Item::DELIVER_FIELDLIST, $condition, $params);
} else {
$ret = Post::select(Item::DELIVER_FIELDLIST, $condition, $params);
$ret = Post::selectOrigin(Item::DELIVER_FIELDLIST, $condition, $params);
}
$items = Post::toArray($ret);
@ -1069,9 +1058,6 @@ class Feed
$feeddata = trim($doc->saveXML());
$msg = ['feed' => $feeddata, 'last_update' => $last_update];
DI::cache()->set($cachekey, $msg, Duration::QUARTER_HOUR);
Logger::info('Feed duration', ['seconds' => number_format(microtime(true) - $stamp, 3), 'nick' => $owner['nickname'], 'filter' => $filter, 'created' => $previous_created]);
return $feeddata;