2015-08-16 115 views
0

我正在編寫一個服務,我希望向用戶提供更多或更少的可變金額BTC的當前值。使用全局變量緩存值

我在想,也許我可以每天在全局變量中存儲和更新1 BTC的當前值,所以我不必一直髮送一堆請求來區塊鏈。

這只是一個想法,但我想,也許我可以這樣做:

  1. 在服務器啓動時或通過後臺程序,發送一個請求blockchain來獲得當前BTC到美元的匯率。
  2. 將值存儲在GLOBAL對象下。例如:GLOBAL.BTCtoUSD = 300
  3. 每當我想將BTC轉換爲USD時,請使用該變量。

這是經常做的事嗎?有什麼缺點嗎?什麼是替代方案?這是某種形式的緩存嗎?

+0

聽起來對我很好,是的,我會考慮本地緩存。 –

回答

1

這是一種緩存形式,在許多情況下都是完全合適的。只要您的應用程序沒有完全更新,那麼緩存絕對可以提高請求的性能。

你可以有一個單獨的計時器,每隔一小時或每隔一段時間更新一次轉換率的值。

僅供參考,node.js全局對象爲小寫的global


使用全局的替代方法是創建一個負責緩存和更新的模塊。然後,你可以require()該模塊中的任何地方,你想訪問緩存的轉化率:

var rates = require('convert-rate'); 

// then just use rates.BTCtoUSD anywhere in this module 

這一點更加模塊化,更容易一點點重用在其他項目中此功能。

+0

謝謝,我只是不確定,因爲我讀過使用全局變量總是一個壞主意。然而,我想不出另一種緩解請求的方式。那我肯定會這樣做。在向用戶顯示時,速率的精確度並不是那麼重要。嗯,我認爲'GLOBAL'然後是'global'的別名?因爲在控制檯上鍵入'GLOBAL'會向我拋出與'global'相同的巨大對象,並且'global === GLOBAL'評估爲true。 在您的更新:Aaaah,很好。所以'require'也被緩存。這似乎是一個更好的選擇。 謝謝! –

+0

@ J.Doe - 由於衝突的可能性和全球負載/創建順序的不確定性,全局變量可能會干擾長期模塊化。將此功能放入可重用模塊並引用模塊中的值將是首選。 – jfriend00