2009-04-16 19 views

cevap

7

Önbellek parçası girdileri, Rails.cache ile eriştiğinizden biraz farklı bir anahtarla oluşturulur.

Kullanım yerine expire_fragment (bir kontrolöre gönderebilirsiniz): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438

+0

Bu benim için çalışmıyor. Bu da sizin için çalışmaya Raylar 3 itibariyle 'Rails.cache.delete_matched 'görünümler/site_search_form *'' – yivo

+0

deneyin olmazsa, parça önbelleğe bakış içeriğine dayalı sonunda bir karma, sahip olduğu onlar Üretilir. Bu, görünüm değiştiğinde önbellek otomatik olarak bozulur, ancak anahtarla süresinin dolmasını zorlaştırır. Rails'e hashı, önbellek çağrısında 'skip_digest: true' ile eklememesini söyleyebilirsiniz. Daha çok bilgi: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –

54

:: Base.new.expire_fragment (anahtar) ActionController Rails 5'te

+2

yakut-1.8.7-P334: 007> ActionController :: Base.new.expire_fragment (: kontrolör => 'ana',: aksiyon => 'endeksi') NoMethodError: tanımsız yöntemi 'host_with_port' nil için: NilClass – pixelearth

+1

Raylar 3 itibarıyla, fragman önbelleğe ucunda bir karma Bu, oluşturuldukları görünümün içeriğine dayanır. Bu, görünüm değiştiğinde önbellek otomatik olarak bozulur, ancak anahtarla süresinin dolmasını zorlaştırır. Rails'e hashı, önbellek çağrısında 'skip_digest: true' ile eklememesini söyleyebilirsiniz. Daha fazla bilgi: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –

2
Rails.cache.delete "views/site_search_form" 
0

Ben büstü için aşağıdaki adımlar attı önbellek skip_digest: true başvurmadan. Sorunumuz, I18n dizelerinin değerinin değiştirilmesinin, önbellek otomatik olarak yakalanmayacağından, hesaplanan önbellek özetinde yansıtılmamasıdır.

/ views/layouts/_footer.html.slim 
- cache :footer do 
    span= t('shared.footer') 

Sonra raylar konsolda koşuyorum:

fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim') 
ActionController::Base.new.expire_fragment(fragment) 

cache_fragment_namevirtual_path kelime argüman dayalı özetini anlamaya edecek İşte

önbellek bloğu tanımlanır görünümüdür.

İlgili konular