From 4abb5585df9826fbf2f939d0af669467190122a7 Mon Sep 17 00:00:00 2001 From: Petr Date: Fri, 26 Jun 2026 20:34:37 +0200 Subject: [PATCH] perf: memoize published_posts within a single request Store the filtered and sorted list of published posts in an instance variable so repeated calls during the same request (posts list, tags, feeds, sitemap) reuse the cached result instead of re-filtering and re-sorting from scratch each time. Sinatra resets instance variables between requests, so the cache stays fresh. --- lib/volumen/server.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/volumen/server.rb b/lib/volumen/server.rb index 9a4be0c..48db326 100644 --- a/lib/volumen/server.rb +++ b/lib/volumen/server.rb @@ -79,8 +79,8 @@ module Volumen end def published_posts - store.all.reject { |post| post.draft? || post.scheduled? } - .sort_by { |post| post.date_string || "" }.reverse + @published_posts ||= store.all.reject { |post| post.draft? || post.scheduled? } + .sort_by { |post| post.date_string || "" }.reverse end def site_payload