我有一個類方法(放置在/app/lib/
),直到接收到一個結果,其執行一些重計算和子http請求。導軌 - 如何緩存數據服務器使用,服務於多個用戶
結果是不是太動態的,並且由多個用戶訪問所述應用程序特定視圖請求。因此,我想安排定期運行該方法(使用cron和Whenever Gem),將結果存儲在服務器的某個地方,使用JSON格式,並根據需要將結果單獨讀入視圖。
這是如何實現的? 正確這樣做的方式是什麼?
我目前有:
def heavyMethod
response = {}
# some calculations, eventually building the response
File.open(File.expand_path('../../../tmp/cache/tests_queue.json', __FILE__), "w") do |f|
f.write(response.to_json)
end
end
,並也有相應的方法來讀取該文件。
我搜查,但沒有找到實現這一使用Rails緩存約定(而不是我寫了一些私有代碼)的例子,在未與ActiveRecord的相關數據。
謝謝!
軌高速緩存 - 。memcached.'cache.set'在烏爾週期性工作,'cache.get'在烏拉圭回合請求ü需要小心發生了什麼在冷啓動。 U可能希望在服務器啓動時運行該過程,或者可以這樣做,以便視圖在缺少條目時運行它。但這對於經驗不利 – 2014-09-30 05:38:56
[Rails指南](http://guides.rubyonrails.org/caching_with_rails.html#cache-stores)提供了許多緩存方法,您也可以使用redis或memcache爲您保存json數據,它閱讀文件可能會更快。 – dddd1919 2014-09-30 06:47:32
@KarthikT,非常感謝這兩個答案。事實上,我希望沒有任何用戶會體驗該方法的加載時間。即,我想每15分鐘執行一次後臺作業,緩存它,並在我的rails視圖中獲取緩存結果的數據。另外,對於冷啓動,在服務器啓動時運行似乎確實是一個更好的主意(使用rake任務或從實例初始化程序調用該方法)。你可以用一個例子說明如何使用memcached方法實現這個答案嗎? – cyber101 2014-09-30 10:14:06