Javascript 需要缓存
Javascript require caching
对于我正在设计的小型无状态API,我需要一个非常简单的i18n工具。我将管理 2 种语言的少于 30 个字符串,不会更多。
我决定写一个非常简单的 i18n 工具:
exports.i18nString = function (language, stringID) {
try {
var dictionary = require(`./${language}.json`)
if (Array.isArray(dictionary[stringID])) {
return dictionary[stringID][Math.floor(Math.random() * dictionary[stringID].length)];
}
return dictionary[stringID];
} catch(error) {
}
return "";
}
示例 JSON 字典:
{
"example": "This is an example",
"multi": [
"Choice 1",
"Choice 2",
"Choice 3"
]
}
它运行完美,非常符合我的需要。不过有一件事困扰着我:我每次调用的函数中都存在 require
需要一个字符串。
我是 Js 的初学者,但我知道 require
打开文件,读取其内容并对其进行评估。但我不知道 Js 是否足够聪明,可以将文件内容保存在缓存中以供后续调用使用。如果是这样,那么我的代码就可以了。如果不是,我可能会遇到性能问题。
各位大神能指点一下吗?
我在随机搜索中找到了答案。
事情是这样的:Node.js 缓存每个文件,如解释的那样 here:
模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用 require('foo')
都会返回完全相同的对象,如果它解析为同一个文件的话。
如果require.cache
不被修改,多次调用require('foo')
不会导致模块代码被多次执行。
对于我正在设计的小型无状态API,我需要一个非常简单的i18n工具。我将管理 2 种语言的少于 30 个字符串,不会更多。
我决定写一个非常简单的 i18n 工具:
exports.i18nString = function (language, stringID) {
try {
var dictionary = require(`./${language}.json`)
if (Array.isArray(dictionary[stringID])) {
return dictionary[stringID][Math.floor(Math.random() * dictionary[stringID].length)];
}
return dictionary[stringID];
} catch(error) {
}
return "";
}
示例 JSON 字典:
{
"example": "This is an example",
"multi": [
"Choice 1",
"Choice 2",
"Choice 3"
]
}
它运行完美,非常符合我的需要。不过有一件事困扰着我:我每次调用的函数中都存在 require
需要一个字符串。
我是 Js 的初学者,但我知道 require
打开文件,读取其内容并对其进行评估。但我不知道 Js 是否足够聪明,可以将文件内容保存在缓存中以供后续调用使用。如果是这样,那么我的代码就可以了。如果不是,我可能会遇到性能问题。
各位大神能指点一下吗?
我在随机搜索中找到了答案。
事情是这样的:Node.js 缓存每个文件,如解释的那样 here:
模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用 require('foo')
都会返回完全相同的对象,如果它解析为同一个文件的话。
如果require.cache
不被修改,多次调用require('foo')
不会导致模块代码被多次执行。