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.