2012-05-14 1 views
-1

Для одного контроллера (только) я хотел бы использовать значение ETag, генерируемое вне логики кэширования рельсов, и самостоятельно управлять ответами 304-vs-200. Кажется, что я ничего не делаю, чтобы настроить заголовок ETag:Как установить настраиваемое значение ETag в ответе контроллера Rails?

response.etag = myEtag 
headers['ETag'] = myEtag 
render :text => myText, :etag => myEtag 

Rails всегда использует свою собственную версию.

Я знаю, что могу отключить кэширование приложения, но я не хочу этого - просто хочу переопределить его в ответах для одного подкласса ActionController.

+0

вы можете попробовать «свежий» читайте здесь http://stackoverflow.com/questions/832035/rails-etags-vs-page-caching-file-cache –

ответ

0

fresh_when и т.д. не совсем моим потребностям - в моем случае решение было отказаться от кэширования с помощью

def caching_allowed? 
    false 
end 

затем установите толькоheaders['ETag'] член на мой ответ - установка любого из .etag опции, похоже, вызывают Rails для MD5 All The Things.

+0

Вопрос, где вы положили этот метод? – Hackeron

+0

Это было навсегда, но, насколько я помню, я переопределял метод в ActionController: http://api.rubyonrails.org/v3.2.0/classes/ActionController/Caching.html#method-i-caching_allowed-3F –