我打電話從服務器的API方法:如何緩存API調用的結果?
def get_data
#.........
get_some_data_from_server
end
我想緩存此調用的結果,很明顯。所以,我在一個表中創建一個字段,改變了get_data
看起來像這樣:
def fetch_data
key = get_cache_key
Rails.cache.fetch key, expires_in: 500.minutes do
get_some_data_from_server
end
end
的get_some_data_from_server
結果不經常變化,這幾乎是相同的所有的時間。但它可能會隨着時間的推移而變化,即使在500分鐘過去之後,即使在之前也是如此。因此,用戶可能會從緩存中收到過期的數據。
這個策略是否合理?我該如何處理get_some_data_from_server
隨時間變化?
如果它的變化改變了,那麼關鍵應該改變。 - 沒有爲什麼?它是持久的。 –
你的鑰匙決定你是否應該提出要求。因此如果請求參數改變,你的密鑰應該改變。我不知道get_some_data在做什麼樣的請求。 – Senjai
你怎麼知道我的鑰匙是什麼決定的?它不依賴於API或其他任何結果。請求get_some_data進行api調用。該鍵看起來像「my_api_call _#{current_user.id}」。 –