Как закончить запись Memcached на Heroku? - PullRequest
0 голосов
/ 24 декабря 2011

Я использую кэширование действий в своем приложении Rails 3 для Heroku с опцией: expires_in.Я попытался вызвать expire_action, непосредственно в контроллере после обновления и внутри свипера.Кажется, ничто не истекает должным образом.

В моем контроллере:

caches_action :embed, :if => Proc.new { |c| c.request.format.js? || c.request.format.rss? }, :expires_in => 5.minutes

В моем действии:

expire_action :action => :embed, :format => :js

И я также попытался сделать это в уборщике, пытаясь использовать генератор URL дляполучить точный ключ:

expire_action obj_embed_url(@obj.unique_token)

Интересно, если Heroku использует слой кэша Varnish, срок действия которого вы не можете истечь.(Срок действия кэша истекает через 5 минут, потому что я вижу обновление содержимого.) Похоже, что у меня правильно настроена надстройка memcached (с использованием гема Dalli; config.cache_store =: dalli_store), и я вижусоответствующие переменные среды ...

$ heroku config |grep MEM 
MEMCACHE_PASSWORD     => xxxxxxxxxxxxxxxxx
MEMCACHE_SERVERS      => xxx.xxx.northscale.net
MEMCACHE_USERNAME     => appxxxxxx%40heroku.com

Чего мне здесь не хватает?

1 Ответ

1 голос
/ 12 апреля 2012

наконец-то понял это.

Пути Heroku не должны совпадать с вызовами expire create / expire.так что если вы укажете путь в создании кэша и будете вызывать этот путь конкретно в expire, он будет работать.Также мне пришлось использовать «expire_fragment» вместо «expire_action».Вот мой код:

в вашем контроллере:

caches_action :load, :up, :juice, :fresh, :cache_path => :custom_cache_path.to_proc

def custom_cache_path
  path = "#{params[:controller]}/#{params[:action]}"
  path += "/#{params[:id]}" if params[:id]
  path += "/#{params[:sha]}" if params[:sha]
  path
end

в методе истечения срока действия:

expire_fragment "serve/up/#{@site.id}"
expire_fragment "serve/fresh/#{@site.secret}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...