Очистить кеш страниц в Rails - PullRequest
1 голос
/ 15 июля 2010

Как очистить кеш страницы? Я попытался восстановить кеш, но выключил его, теперь моя домашняя страница всегда загружает кэшированную версию. Я попытался выполнить следующее задание с граблями.

namespace :cache_clear do
    desc 'clear a page cache'
    task :expire_cache => :environment do
        ActionController::Base::expire_page('/')
        puts "Cache cleared"
    end
end

Вот код моей домашней страницы, он показывает партиалы, которые по сути представляют коллекцию других моделей. Это как-то связано с этим?

<div class="span-17 last">
<%= render :partial => "top_votes" %>
</div>

<% content_for :right_nav do %>
  <%= render :partial => "latest_votes" %>
  <%= render :partial => "whos_voting" %>
  <%= render :partial => "top_voters" %>

<% end %>

Я даже пытался истечь кеш из свипера,

в моем контроле voice_topic у меня есть

cache_sweeper: home_sweeper

class HomeSweeper < ActionController::Caching::Sweeper
    observe VoteTopic
  def after_index(vote_topic)
    expire_cache(vote_topic)
  end

  def expire_cache(vote_topic)
     expire_page :controller => :home, :action => :index
  end
end

Это тоже не работает, у меня отключен кеш в моем файле development.rb.

Ответы [ 2 ]

3 голосов
/ 15 июля 2010

Кэш страницы всегда находится на диске, поэтому вам нужно будет на самом деле очистить каталог / файлы, которые вы хотите очистить. Это неудачный способ кеширования.

 cache_dir = ActionController::Base.page_cache_directory
 unless cache_dir == RAILS_ROOT+"/public"
   FileUtils.rm_r(Dir.glob(cache_dir+"/*")) rescue Errno::ENOENT
 end
2 голосов
/ 29 октября 2011

У меня была похожая проблема. При использовании memcached это работает:

desc "Expire page cache"
task :expire_pages => :environment do
  ActionController::Base::expire_page("/")
  Rails.logger.info("Removed page cache")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...