From 8d568b05c469a81378bbe19fceb36a38d640302d Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 6 Feb 2013 11:55:54 -0500 Subject: [PATCH] Don't enable Cache-Control if the site has restricted access. --- app/controllers/application_controller.rb | 23 +++++++++++++++++++++-- app/controllers/list_controller.rb | 3 +-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ccdcf236738..4a95d6f2abc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -135,14 +135,33 @@ class ApplicationController < ActionController::Base render json: MultiJson.dump(obj) end + def can_cache_content? + # Don't cache unless we're in production mode + return false unless Rails.env.production? + + # Don't cache logged in users + return false if current_user.present? + + # Don't cache if there's restricted access + return false if SiteSetting.restrict_access? + + true + end + + # Our custom cache method + def discourse_expires_in(time_length) + return unless can_cache_content? + expires_in time_length, public: true + end + # Helper method - if no logged in user (anonymous), use Rails' conditional GET # support. Should be very fast behind a cache. def anonymous_etag(*args) - if current_user.blank? and Rails.env.production? + if can_cache_content? yield if stale?(*args) # Add a one minute expiry - expires_in 1.minute, :public => true + expires_in time_length, public: true else yield end diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index 005b3d14c09..5d586350248 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -58,8 +58,7 @@ class ListController < ApplicationController draft = Draft.get(current_user, list.draft_key, list.draft_sequence) if current_user list.draft = draft - # Add expiry of 1 minute for anonymous - expires_in 1.minute, :public => true if current_user.blank? + discourse_expires_in 1.minute respond_to do |format| format.html do