Mam aplikację RoR (Ruby v1.8.7; rails v2.3.5), która buforuje stronę w środowisku programistycznym. Nie stanowiłoby to większego problemu, ale a
elementy strony w pamięci podręcznej są nieprawidłowe.
Nie wprowadziłem żadnych zmian w pliku development.rb i świadomie nie dodałem żadnych poleceń buforowania do kontrolerów.
Próbowałem wyczyścić pliki cookie przeglądarki (Firefox 3.5 na OSX) i pamięci podręczne stron dla tej witryny (localhost). Ponownie uruchomiłem też Mongrel. Wydaje się, że nic nie pomaga.
czego mi brakuje?
źródło
rake tmp:cache:clear
może być tym, czego szukasz.źródło
RAILS_ENV=staging bundle exec rake tmp:cache:clear
przeciwnym razie myślę, że to nie zadziałaUdało mi się rozwiązać ten problem, czyszcząc pamięć podręczną zasobów:
$ rake assets:clean
źródło
Sprawdź statyczną wersję swojej strony w / public i usuń ją, jeśli tam jest. Kiedy Rails 3.x buforuje strony, pozostawia statyczną wersję w twoim publicznym folderze i ładuje ją, gdy użytkownicy odwiedzają twoją witrynę. Pozostanie to nawet po wyczyszczeniu pamięci podręcznej.
źródło
/tmp/cache/
katalogu.Jeśli robisz buforowanie fragmentów , możesz ręcznie zepsuć pamięć podręczną, aktualizując klucz pamięci podręcznej, na przykład:
Wersja 1
<% cache ['cool_name_for_cache_key', 'v1'] do %>
Wersja 2
<% cache ['cool_name_for_cache_key', 'v2'] do %>
Lub możesz automatycznie zresetować pamięć podręczną na podstawie stanu niestatycznego obiektu, takiego jak obiekt ActiveRecord, na przykład:
<% cache @user_object do %>
Dzięki tej metodzie za każdym razem, gdy obiekt użytkownika zostanie zaktualizowany, pamięć podręczna zostanie automatycznie zresetowana.
źródło
updated_at
zmodyfikowaniu obiekt AR nie będzie już pasował do klucza pamięci podręcznej, co spowoduje ponowne odzyskanie fragmentu.Bardziej ezoteryczne sposoby:
Rails.cache.delete_matched("*")
W przypadku Redis:
Redis.new.keys.each{ |key| Rails.cache.delete(key) }
źródło