Don't enable Cache-Control if the site has restricted access.

This commit is contained in:
Robin Ward 2013-02-06 11:55:54 -05:00
parent 0b6b63f24a
commit 8d568b05c4
2 changed files with 22 additions and 4 deletions

View file

@ -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

View file

@ -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