Ruby on Rails: очистить кешированную страницу

У меня есть приложение RoR (ruby v1.8.7; rails v2.3.5), которое кэширует страницу в среде разработки. Это не будет проблемой, но элементы кэшированной страницы a неверны.

Я не внес никаких изменений в файл development.rb, и я не сознательно добавил какие-либо команды кэширования для контроллеров.

Я попытался очистить файл cookie браузера (Firefox 3.5 в OSX) и кэширование страниц для этого сайта (localhost). Я также перезапустил Mongrel. Кажется, ничего не помогает.

Что мне не хватает?

Ответ 1

Эта строка в development.rb гарантирует, что кеширование не происходит.

config.action_controller.perform_caching             = false

Вы можете очистить кеш Rails с помощью

Rails.cache.clear

Тем не менее, я не уверен, что это проблема кеширования. Вы вносите изменения в страницу и не видите их отражение? Возможно, вы не смотрите на живую версию этой страницы? Я сделал это один раз (румянец).

Обновление:

Вы можете вызвать эту команду из консоли. Вы уверены, что используете приложение в разработке?

Единственная альтернатива заключается в том, что страница, которую вы пытаетесь отобразить, - это не страница, которая отображается.

Если вы смотрите вывод сервера, вы должны увидеть команду рендеринга, когда страница будет выглядеть примерно так:

Rendered shared_partials/_latest_featured_video (31.9ms)
Rendered shared_partials/_s_invite_friends (2.9ms)
Rendered layouts/_sidebar (2002.1ms)
Rendered layouts/_footer (2.8ms)
Rendered layouts/_busy_indicator (0.6ms)

Ответ 2

rake tmp:cache:clear может быть тем, что вы ищете.

Ответ 3

Мне удалось решить эту проблему, очистив кеш ресурсов:

$ rake assets:clean

Ответ 4

Проверьте статическую версию своей страницы в /public и удалите ее, если она есть. Когда Rails 3.x кэширует страницы, он оставляет статическую версию в вашей общей папке и загружает ее, когда пользователи попадают на ваш сайт. Это останется даже после очистки кеша.

Ответ 5

Если вы выполняете кеширование фрагментов, вы можете вручную разбить кеш, обновив ключ кеша, например:

Версия # 1

<% cache ['cool_name_for_cache_key', 'v1'] do %>

Версия # 2

<% cache ['cool_name_for_cache_key', 'v2'] do %>

Или вы можете автоматически использовать кэш reset на основе состояния нестатического объекта, такого как объект ActiveRecord, например:

<% cache @user_object do %>

С помощью этого метода, когда пользовательский объект обновляется, кэш автоматически будет reset.