Мой nodejs (12.18) проект должен получить ключ доступа с удаленного сервера и передать его пользователям, которые его запрашивают. Ключ доступа будет обновляться каждые 5 минут. a setInterval
используется для получения ключа доступа каждые 5 минут с удаленного сервера, а ключ доступа хранится в global.variable
для доступа на позднее чтение.
const helper = require("../lib/helper");
global._cloudStorageAccessInfoObject = {}; //<<==declare global variable
var bucket_name, roleSessionName, policy, accessObj;
policy = JSON.stringify({
//my policy
});
bucket_name = "xxx-cloud-1";
roleSessionName = 'myapp';
setInterval(async () => {
accessObj = await helper.getOSSstsToken(bucket_name, roleSessionName, policy);
if (accessObj && accessObj !== {} && accessObj.accessKeyId) {
_cloudStorageAccessInfoObject = accessObj; //<<==access key assigned to global variable
}
}, 1000*60*5); //<<==retrieve access key once every 5 minutes
Приведенный выше код пока работает нормально. По этому поводу есть 2 вопроса:
-
setInterval
с точки зрения производительности хорошо для использования в продакшене (много пользователей)? - Есть сообщение , о котором говорится
bad global variable
. Есть ли другое лучшее альтернативное решение для хранения ключа доступа для позднего использования в приложении. В настоящее время приведенный выше код является единственным кодом, обновляющим глобальные данные для доступа на чтение в конце приложения.