使用全局变量来缓存值

Using globals to cache values

本文关键字:缓存 全局变量      更新时间:2023-09-26

我正在编写一个服务,在这个服务中,我想为用户提供或多或少以美元计算的可变比特币的当前价值。

我在想,也许我可以每天存储和更新1 BTC的当前值,在一个全局变量中,所以我不必一直向区块链发送一堆请求。

这只是一个想法,但我想也许我可以这样做:

  1. 在服务器启动或通过守护进程时,向区块链发送一个请求以获取当前BTC对美元的汇率。
  2. 将值存储在GLOBAL对象下。例如:GLOBAL.BTCtoUSD = 300
  3. 当我想将BTC转换为美元时,使用该变量。

这是经常做的事情吗?有什么缺点吗?还有什么替代方案呢?这是某种形式的缓存吗?

这是一种非常适合于许多情况的缓存形式。只要您的应用程序可以接受不完全更新的速率,那么缓存绝对可以提高请求的性能。

你可以有一个单独的计时器,每隔一段时间(每小时或任何你想要更新它的频率)更新转换率的值。

供参考,node.js全局对象是小写的global


使用全局的另一种选择是创建一个模块来负责缓存和更新。然后,您可以在该模块中的任何地方require(),您想要访问缓存的转化率:

var rates = require('convert-rate');
// then just use rates.BTCtoUSD anywhere in this module

这是更模块化的,使它更容易在其他项目中重用此功能。