From decd01c8d0307f1b82f22c26e5bb11963d6c4220 Mon Sep 17 00:00:00 2001 From: Kevin McConnell Date: Thu, 23 Oct 2025 11:44:26 -0700 Subject: [PATCH] Extend public caching to 30 seconds Up from the previous 5 seconds. It's still short enough that the pages shouldn't feel stale, but it further reduces the number of requests that will reach the app. Also moved this into a shared concern so we can adjust the caching rule in one place. --- app/controllers/concerns/cached_publicly.rb | 12 ++++++++++++ app/controllers/public/cards_controller.rb | 4 +--- .../public/collections/columns/closeds_controller.rb | 5 +---- .../collections/columns/not_nows_controller.rb | 5 +---- .../public/collections/columns/streams_controller.rb | 5 +---- .../public/collections/columns_controller.rb | 5 +---- app/controllers/public/collections_controller.rb | 5 +---- 7 files changed, 18 insertions(+), 23 deletions(-) create mode 100644 app/controllers/concerns/cached_publicly.rb diff --git a/app/controllers/concerns/cached_publicly.rb b/app/controllers/concerns/cached_publicly.rb new file mode 100644 index 000000000..62ab23d05 --- /dev/null +++ b/app/controllers/concerns/cached_publicly.rb @@ -0,0 +1,12 @@ +module CachedPublicly + extend ActiveSupport::Concern + + included do + before_action :set_cache_headers + end + + private + def set_cache_headers + expires_in 30.seconds, public: true + end +end diff --git a/app/controllers/public/cards_controller.rb b/app/controllers/public/cards_controller.rb index 060c43871..9434882e7 100644 --- a/app/controllers/public/cards_controller.rb +++ b/app/controllers/public/cards_controller.rb @@ -1,12 +1,10 @@ class Public::CardsController < ApplicationController - include PublicCardScoped + include CachedPublicly, PublicCardScoped allow_unauthenticated_access only: :show layout "public" def show - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end end diff --git a/app/controllers/public/collections/columns/closeds_controller.rb b/app/controllers/public/collections/columns/closeds_controller.rb index 2b9467504..f41e088f2 100644 --- a/app/controllers/public/collections/columns/closeds_controller.rb +++ b/app/controllers/public/collections/columns/closeds_controller.rb @@ -1,5 +1,5 @@ class Public::Collections::Columns::ClosedsController < ApplicationController - include PublicCollectionScoped + include CachedPublicly, PublicCollectionScoped allow_unauthenticated_access only: :show @@ -7,8 +7,5 @@ class Public::Collections::Columns::ClosedsController < ApplicationController def show set_page_and_extract_portion_from @collection.cards.closed.recently_closed_first - - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end end diff --git a/app/controllers/public/collections/columns/not_nows_controller.rb b/app/controllers/public/collections/columns/not_nows_controller.rb index d99be125a..64382869d 100644 --- a/app/controllers/public/collections/columns/not_nows_controller.rb +++ b/app/controllers/public/collections/columns/not_nows_controller.rb @@ -1,5 +1,5 @@ class Public::Collections::Columns::NotNowsController < ApplicationController - include PublicCollectionScoped + include CachedPublicly, PublicCollectionScoped allow_unauthenticated_access only: :show @@ -7,8 +7,5 @@ class Public::Collections::Columns::NotNowsController < ApplicationController def show set_page_and_extract_portion_from @collection.cards.postponed.reverse_chronologically.with_golden_first - - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end end diff --git a/app/controllers/public/collections/columns/streams_controller.rb b/app/controllers/public/collections/columns/streams_controller.rb index 904cab2e5..4a38d0d08 100644 --- a/app/controllers/public/collections/columns/streams_controller.rb +++ b/app/controllers/public/collections/columns/streams_controller.rb @@ -1,5 +1,5 @@ class Public::Collections::Columns::StreamsController < ApplicationController - include PublicCollectionScoped + include CachedPublicly, PublicCollectionScoped allow_unauthenticated_access only: :show @@ -7,8 +7,5 @@ class Public::Collections::Columns::StreamsController < ApplicationController def show set_page_and_extract_portion_from @collection.cards.awaiting_triage.by_last_activity.with_golden_first - - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end end diff --git a/app/controllers/public/collections/columns_controller.rb b/app/controllers/public/collections/columns_controller.rb index bd9341234..aa905f768 100644 --- a/app/controllers/public/collections/columns_controller.rb +++ b/app/controllers/public/collections/columns_controller.rb @@ -1,5 +1,5 @@ class Public::Collections::ColumnsController < ApplicationController - include ActionView::RecordIdentifier, PublicCollectionScoped + include ActionView::RecordIdentifier, CachedPublicly, PublicCollectionScoped allow_unauthenticated_access only: :show @@ -9,9 +9,6 @@ class Public::Collections::ColumnsController < ApplicationController def show set_page_and_extract_portion_from @column.cards.active.by_last_activity.with_golden_first - - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end private diff --git a/app/controllers/public/collections_controller.rb b/app/controllers/public/collections_controller.rb index 1e208f766..cf1530958 100644 --- a/app/controllers/public/collections_controller.rb +++ b/app/controllers/public/collections_controller.rb @@ -1,5 +1,5 @@ class Public::CollectionsController < ApplicationController - include PublicCollectionScoped + include CachedPublicly, PublicCollectionScoped allow_unauthenticated_access only: :show @@ -7,8 +7,5 @@ class Public::CollectionsController < ApplicationController def show set_page_and_extract_portion_from @collection.cards.awaiting_triage.by_last_activity.with_golden_first - - # To enable caching at intermediate proxies during traffic spikes - expires_in 5.seconds, public: true end end