Ruby on Rails, как отключить / отключить ETag

Приветствую,

Как отключить ETag в Ruby on Rails v2.3.5

Когда я делаю прямой запрос к RoR / Mongrel, присутствует заголовок ETag .

TIA,

-даниель

8
задан Daniel 19 January 2010 в 00:44
поделиться

4 ответа

Не думаю, что они включены по умолчанию.

Как я понимаю, они должны быть явно установлены с помощью stale?/fresh_когда звонок или что-то подобное.

0
ответ дан 5 December 2019 в 06:23
поделиться

В объекте ActionController::Response есть метод etag setter, который удаляет HTTP-заголовок ETag, если он пустой, так что вы должны быть в состоянии очистить его в вашем контроллере (вероятно, в фильтре before):

response.etag = nil
1
ответ дан 5 December 2019 в 06:23
поделиться

Почему бы не добавить before_filter в контроллер приложения, который устанавливает etag равным нулю?

-1
ответ дан 5 December 2019 в 06:23
поделиться

Помещение 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
5
ответ дан 5 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: