Quelque chose commeComment expirer un fragment de vue en cache à partir de la console?
Rails.cache.delete('site_search_form')
ne semble pas fonctionner. Est-ce possible? Merci.
Quelque chose commeComment expirer un fragment de vue en cache à partir de la console?
Rails.cache.delete('site_search_form')
ne semble pas fonctionner. Est-ce possible? Merci.
entrées de fragments de cache sont créés avec une touche légèrement différente de celle que vous accédez à Rails.cache.
Utilisez expire_fragment
à la place (vous pouvez l'envoyer à un contrôleur): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438
Cela ne fonctionne pas pour moi. Si cela ne fonctionne pas pour vous essayer trop 'Rails.cache.delete_matched « vues/site_search_form * »' – yivo
Au Rails 3, les caches fragments ont un hachage à la fin, qui est basé sur le contenu de la vue dans laquelle ils Sont générés. C'est ainsi que le cache est automatiquement supprimé si la vue change, mais il est difficile d'expirer par clé. Vous pouvez dire à Rails de ne pas ajouter le hachage avec 'skip_digest: true' dans l'appel du cache. Plus d'info: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –
ActionController :: Base.new.expire_fragment (clé)
rubis-1.8.7-P334: 007> ActionController :: Base.new.expire_fragment (: controller => 'principale',: action => 'index') NoMethodError: méthode définie 'host_with_port » pour nil: NilClass – pixelearth
Comme des rails 3, les caches ont un fragment de hachage à la fin , qui est basé sur le contenu de la vue dans laquelle ils sont générés. C'est ainsi que le cache est automatiquement supprimé si la vue change, mais il est difficile d'expirer par clé. Vous pouvez dire à Rails de ne pas ajouter le hachage avec 'skip_digest: true' dans l'appel du cache. Plus d'infos: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –
Rails.cache.delete "views/site_search_form"
Dans Rails 5 Je pris les mesures suivantes pour le buste le cache sans recourir à skip_digest: true
. Notre problème était que la modification de la valeur des chaînes I18n ne se reflétait pas dans le résumé du cache calculé, de sorte que le cache ne serait pas automatiquement supprimé.
Voici le point de vue où le bloc de cache est défini:
/ views/layouts/_footer.html.slim
- cache :footer do
span= t('shared.footer')
Puis dans la console rails je cours:
fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim')
ActionController::Base.new.expire_fragment(fragment)
cache_fragment_name
va comprendre le résumé basé sur l'argument mot-clé virtual_path
.
Quelle version de Rails Courez-vous? La méthode de suppression du cache a été ajoutée dans 2.1. – vrish88