diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index af9863b7b..d2d6f66da 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,7 +6,7 @@ class ApplicationController < ActionController::Base include SessionCurrentUser include ValidRequest include Pundit - include FastlyHeaders + include CachingHeaders include ImageUploads include VerifySetupCompleted diff --git a/app/controllers/concerns/fastly_headers.rb b/app/controllers/concerns/caching_headers.rb similarity index 74% rename from app/controllers/concerns/fastly_headers.rb rename to app/controllers/concerns/caching_headers.rb index 1100f1e3a..bf0c1db49 100644 --- a/app/controllers/concerns/fastly_headers.rb +++ b/app/controllers/concerns/caching_headers.rb @@ -1,4 +1,4 @@ -module FastlyHeaders +module CachingHeaders extend ActiveSupport::Concern # The following is from the now deprecated fastly-rails gem @@ -12,11 +12,21 @@ module FastlyHeaders # custom config example: # {cache_control: 'public, no-cache, maxage=xyz', surrogate_control: 'max-age: 100'} def set_cache_control_headers( - max_age = 1.day.to_i, cache_control: "public, no-cache", + max_age = 1.day.to_i, surrogate_control: nil, stale_while_revalidate: nil, stale_if_error: 26_400 ) - request.session_options[:skip] = true # no cookies + # TODO: [@forem/delightful]: Once we've tested that removing `no-cache` from the Cache-Control headers + # does not adversely affect fastly, we should remove this specific check entirely. + article_requested = request.env["REQUEST_PATH"].present? && + request.env["REQUEST_PATH"].include?("the-3-biggest-misconceptions-about-diversity-3hkm") + cache_control = if article_requested + "public, max-age=86400" + else + "public, no-cache" + end + + request.session_options[:skip] = true # no cookies response.headers["Cache-Control"] = cache_control response.headers["Surrogate-Control"] = surrogate_control.presence || build_surrogate_control(