2015-01-28 11 views
0

У меня есть приложение Ruby on Rails, в котором используется кэширование фрагментов и использование memcached для хранения данных. Также у меня есть подметальная машина, срок действия которой истекает при изменении модель.Ruby - Как обновить кеш фрагмента после истечения срока действия в Rails

index.html.erb 

<% cache 'recent_albums' do %> 
contents to be cached 
<%end %> 


class AlbumsSweeper < ActionController::Caching::Sweeper 
    observe Album 

    def after_save(album) 
    expire_cache(album) 
    end 

    def after_destroy(album) 
    expire_cache(album) 
    end 

    def expire_cache(album) 
    expire_fragment 'recent_albums' 
    end 

end 

У меня есть требование, чтобы до того, как пользователь набрал страницу «Альбомы», истекший фрагмент нуждается в обновлении с новыми данными. Может ли кто-нибудь помочь в том, как можно обновить данные кэша фрагментов?

ответ

0

Вся концепция кэширования - «сделать что-то и запомнить его в следующий раз».

Если я правильно понимаю ваши вопросы; вы пытаетесь сделать что-то еще, то есть «есть что-то всегда готовое, когда что-то выполняется», поэтому вы, вероятно, должны использовать что-то еще.

Memcached поддерживает сохранение ключа: значение пары данных - поэтому, если вы хотите, чтобы что-то всегда было готово и «предварительно вырезано», вы можете пропустить использование кеша и вместо этого просто сохранить значения ключа: Memcached. Затем обновите его после after_save и after_destroy и т. Д.

Кроме этого - кеш фрагмента автоматически обновляется при доступе, а не в кеше.

 Смежные вопросы

  • Нет связанных вопросов^_^