假設我有一個我正在打開(消耗)每個頁面負載的天氣web服務。效率或智能不是很高,可能會超過我的API限制或讓網絡服務所有者發瘋。因此,我沒有直接從控制器動作中獲取數據,而是有一個輔助/作業/方法(某一層),有機會緩存數據。我們還要說,我不太關心數據的實時性。在使用web服務時緩存
現在我過去所做的只是將來自天氣服務的屬性存儲在表格中,並且每隔一段時間刷新一次數據。例如,氣象服務可能是這樣的:
Weather for 90210 (example primary key)
-----------------------------
Zip Name: Beverly Hills
Current Temperature: 90
Last Temp: 89
Humidity: 0
... etc.
因此,在這種情況下,我會爲每個屬性創建列,並將其儲存當我從web服務獲取。我可以有一個到期的導軌操作(頁面緩存)來進行刷新,或者我可以做一個後臺工作。
這個簡單的方法運行良好,除非web服務具有大量的屬性(比如1000)。現在我花了很多時間來創建和維護數據庫列,重複其他人已有的屬性。如果我可以簡單地緩存整個響應並在需要時將其稱爲簡單哈希,那麼最好的做法是。然後,我將所有屬性緩存爲web服務提供的「免費」,因爲Web服務的所有功能都將位於我的哈希中,而不僅僅是緩存子集。
要做到這一點,我可能會獲取Web服務響應,序列化它(YAML也許),然後獲取序列化的對象,如果它存在。呃,不是很好。序列化可能會出現特殊字符。如果我可以遵循一個memcached類型模型,但是我不認爲你可以在memcached中存儲複雜的對象,那真的很酷嗎?我還想限制引入的軟件數量,因此獨立代理層會不太理想。
任何人做過類似的事情或者有一個這樣的名字?
是否有一個原因,爲什麼像將主鍵提取到其列並將另一列中的整個響應轉儲不起作用一樣簡單? – 2011-03-22 14:52:08
好吧,我想避免一個blob,並有更結構化的東西。 – squarism 2011-03-22 15:38:52
我在這裏失蹤的單詞「博客」有一些隱藏的含義嗎? – 2011-03-22 15:41:45