這兩個命令是否相同?如果不是,有什麼區別?Rails.cache.clear和rake tmp:cache:clear有什麼區別?
39
A
回答
67
rake任務只清除存儲在"#{Rails.root}/tmp/cache"
文件系統中的文件。這是該任務的代碼。
namespace :cache do
# desc "Clears all files and directories in tmp/cache"
task :clear do
FileUtils.rm_rf(Dir['tmp/cache/[^.]*'])
end
end
Rails.cache.clear
將根據您的應用程序設置config.cache_store
做不同的事情。 http://guides.rubyonrails.org/caching_with_rails.html#cache-stores
如果您使用的是config.cache_store = :file_store
,那麼Rails.cache.clear
在功能上與rake tmp:cache:clear
相同。但是,如果您使用其他cache_store
,如:memory_store
或:mem_cache_store
,則只有Rails.cache.clear
會清除您的應用高速緩存。在這種情況下,rake tmp:cache:clear
只會嘗試從"#{Rails.root}/tmp/cache"
中刪除文件,但可能實際上不會執行任何操作,因爲文件系統中可能沒有緩存任何內容。
相關問題
- 1. 'bundle exec rake'與rake有什麼區別?
- 2. 在Rails 2.x中,「rake gems:unpack」和「rake gems:freeze」有什麼區別?
- 3. 有什麼區別`和$(Bash中有什麼區別?
- 4. 有什麼區別? :和||
- 5. &&和||有什麼區別?
- 6. 「/」和「/ *」有什麼區別?
- 7. 有什麼區別:。!和:r!?
- 8. ==和===有什麼區別?
- 9. Appender和〜有什麼區別?
- 10. $ @和$ *有什麼區別?
- 11. is和=有什麼區別?
- 12. #.00和#。##有什麼區別?
- 13. `==`和`is`有什麼區別?
- 14. '=='和'==='有什麼區別?
- 15. /和/#/有什麼區別?
- 16. | 0和~~有什麼區別?
- 17. `&`和`ref`有什麼區別?
- 18. ==和===有什麼區別?
- 19. ==和===有什麼區別?
- 20. `{}`和`[]`有什麼區別?
- 21. JavaScript和=== ===有什麼區別?
- 22. difftime和' - '有什麼區別?
- 23. =和==有什麼區別?
- 24. 有什麼區別
- 25. 有什麼區別
- 26. ....有什麼區別?
- 27. 有什麼區別
- 28. 有什麼區別?
- 29. xtype和別名有什麼區別?
- 30. Mixpanel:識別()和people.identify()有什麼區別?
當我們將緩存存儲更改爲:mem_cache_store時,我注意到Rails.cache.clear也開始清除所有用戶會話,並註銷所有用戶。這是預期的行爲?有什麼辦法可以在不碰觸會話的情況下清除緩存? (我們正在從Rails 3升級到Rails 4) – sandre89