Ruby on Rails: очистить кэшированную страницу - PullRequest
75 голосов
/ 17 марта 2010

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

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

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

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

Ответы [ 5 ]

115 голосов
/ 17 марта 2010

Эта строка в 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)
102 голосов
/ 02 октября 2013

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

24 голосов
/ 28 мая 2013

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

$ rake assets:clean
4 голосов
/ 13 января 2014

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

2 голосов
/ 20 января 2016

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

Версия # 1

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

Версия # 2

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

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

<% cache @user_object do %>

При использовании этого метода ^ каждый раз, когда пользовательский объект обновляется, кэш автоматически сбрасывается.

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