Переопределение рельсов Заголовок Cache-Control при перенаправлении - PullRequest
5 голосов
/ 04 июня 2011

Буду ли я:

head 302

или

head 307

или

redirect_to

вызывает в том же действии контроллера

response.headers['Cache-Control'] = "public, max-age=86400"

не имеют никакого эффекта. Rails отправляет:

Cache-Control: no-cache

несмотря ни на что. Мне нужно отправить заголовок Cache-Control, чтобы дать команду пограничному кешу обслуживать перенаправление в течение дня. Это возможно?

Ответы [ 4 ]

12 голосов
/ 15 июня 2011

Вы не можете установить Cache-Control непосредственно в заголовки (больше?), Так как вам нужно изменить объект response.cache_control (так как он будет использоваться для установки заголовка Cache-Control позже).

К счастью, метод expires_in позаботится об этом за вас:

expires_in 1.day, :public => true

Подробнее здесь: http://apidock.com/rails/ActionController/ConditionalGet/expires_in

1 голос
/ 17 марта 2016

С Rails 5 вы можете сделать

response.cache_control = 'public, max-age=86400'
1 голос
/ 06 июня 2011

Попробуйте использовать это вместо

response.headers['Cache-Control'] = 'public, max-age=300'

и убедитесь, что вы находитесь в производственном режиме.Rails не кэшируется при разработке.

0 голосов
/ 04 июня 2011
. I need to send the Cache-Control header to instruct an edge cache to serve the redirect for a day.

Как это возможно?в случае временного перенаправления браузеры всегда будут пытаться сначала получить исходный URL-адрес, а при перенаправлении они будут пытаться использовать другой URL-адрес, который, если кешируется на прокси-серверах, может быть получен оттуда.Но опять же браузер все же установит первый контакт с вашим сервером.

...