Šim*_*das 2 javascript node.js express
我有条件地在我的Node应用程序所服务的网页中包含一些静态HTML-snippet文件.我正在考虑为这些片段设置一个缓存映射,我将其包含在Express的app.js文件的顶部:
var cache = Object.create(null);
cache['404'] = fs.readFileSync('path/to/404.html');
cache['weekend'] = fs.readFileSync('path/to/weekend.html');
Run Code Online (Sandbox Code Playgroud)
此代码在初始化期间运行(即每当我的节点应用程序(重新)启动时).我想知道readFileSync()在这种情况下使用是否是一种糟糕的方法.
为了比较,类似的异步方法:
var cache = Object.create(null);
fs.readFile('path/to/404.html', function (err, data) {
cache['404'] = data;
});
fs.readFile('path/to/weekend.html', function (err, data) {
cache['weekend'] = data;
});
Run Code Online (Sandbox Code Playgroud)
在长时间运行的程序中,在启动时执行同步请求很好.同步请求的问题是它将阻止整个应用程序.虽然如果他们不得不等待额外0.1秒的响应,您的个人请求将会受到影响,但如果启动时需要额外的0.1秒,您的整个应用程序几乎肯定不会受到影响.(我假设你的档案不是"巨大的").
换句话说:异步的唯一好处是在发生IO阻塞调用时可能会发生其他事情.如果这是您的整个计划:
readFileAsync(file, function() {
startListeningForRequests();
}
Run Code Online (Sandbox Code Playgroud)
然后它相当于读取同步.但是,如果您需要在启动时读取1000个文件,则异步版本可能更易于维护 - 您当然希望并行执行此操作.但在我作为网络开发人员的实际经验中,这不太可能,所以同步很好.
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |