Приветствую,
Как отключить ETag в Ruby on Rails v2.3.5
Когда я делаю прямой запрос к RoR / Mongrel, присутствует заголовок ETag .
TIA,
-даниель
Не думаю, что они включены по умолчанию.
Как я понимаю, они должны быть явно установлены с помощью stale?/fresh_когда звонок или что-то подобное.
В объекте ActionController::Response
есть метод etag
setter, который удаляет HTTP-заголовок ETag, если он пустой, так что вы должны быть в состоянии очистить его в вашем контроллере (вероятно, в фильтре before):
response.etag = nil
Почему бы не добавить before_filter в контроллер приложения, который устанавливает etag равным нулю?
Помещение response.etag = nil
в before_filter не работает. Этаг генерируется непосредственно перед отправкой ответа (он вычисляется из тела, поэтому после того, как все отрисовки были сделаны).
Правильное решение для отключения использования и генерации etag (и экономии времени на md5) - вот этот обезьяний патч:
module ActionController
class Request
# never match any incomming etag
def etag_matches?(etag)
false
end
end
class Response
# fake rails that our response already has an etag set and so none is generated automatically
def etag?
true
end
end
end