Safari слишком сильно кеширует страницы, как добавить заголовок expires с помощью rails - PullRequest
0 голосов
/ 05 марта 2010

Я кэширую страницу на большинстве своих страниц и использую динамический js-файл для добавления пользовательского контента.

Так что в моем заголовочном файле у меня есть что-то вроде этого:

<%= javascript_include_tag '/dynamic_header/current' %>

Для этого нужно выполнить представление show.js.erb контроллера dynamic_header, которое возвращается вместе со страницей и обрабатывает внедрение динамического содержимого.

Все хорошо, пока я не протестирую под сафари. (Firefox отлично работает)

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

Есть ли в моем контроллере простой способ добавить заголовок expires в этот файл? Или у людей есть какие-либо другие предложения о том, как сделать так, чтобы сафари заметил, что файл в кэше изменился.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

Обычно для статических файлов добавляется дата их изменения в конце, чтобы исправить проблемы с кэшированием. Поскольку ваш файл динамический, вам просто нужно добавить текущее время в конец пути.

Это не поддерживается javascript_include_tag, поэтому вам нужно написать сценарий включения тега вручную, например так:

<script type="text/javascript" src="/dynamic_header/current?t=<%=Time.now.to_i%>"></script>

Удачи!

0 голосов
/ 05 марта 2010

Может быть, вы можете добавить этот заголовок:

Cache-Control: no-cache

Лучший способ сделать это, вероятно, подключить стойку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...