express启动时缓存资源
Cache resource on startup of express
我想知道是否有人能帮我指出如何在启动web服务器时在express/node中缓存资源。myCol.find非常昂贵,所以我只想在启动时运行一次,并为所有后续请求缓存结果。有没有一个我可以参与的启动步骤?这可以在服务器开始接受请求之前同步完成吗?
我有下面的代码,但我想引用一个缓存的变量,而不是mongo-db
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var myCol = require('./customModule');
var port = process.env.PORT || 8080;
var router = express.Router();
router.get('/test/:testId', function(req, res) {
myCol.find(function(err, allResults) {
res.json(allResults);
});
});
app.use('/api', router);
app.listen(port);
是的,您只需要确保您的服务器在通过myCol.find()
:获取结果后开始侦听
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var myCol = require('./customModule');
var port = process.env.PORT || 8080;
var router = express.Router();
var myResultsCache;
router.get('/test/:testId', function(req, res) {
res.send(myResultsCache);
});
app.use('/api', router);
myCol.find(function(err, allResults) {
//you should add some error handling here
myResultsCache = allResults;
app.listen(port);
});
您可以交换myCol.find
和路由处理程序的顺序,以便相关代码为:
myCol.find(function(error, results) {
if (error) throw error;
router.get('/test/:testId', function (request, response) {
response.json(results);
});
});
这仍然是异步的,但服务器只有在find
操作完成后才能做出响应。
相关文章:
- 资源管理器9上的html5视频缓存
- 使用HTML5缓存时无法加载外部资源
- 检测远程资源的应用程序缓存生存能力
- 获取所有缓存资源文件的本地路径
- 一页JavaScript应用程序和静态资源的缓存
- 角度资源的缓存根本不起作用
- Android Webview 从过期的缓存加载资源
- 获取使用 HTML5 应用程序缓存时下载的资源计数
- 禁止缓存来自特定主机的资源
- 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存的资源
- 从Rails资源管道中清除缓存
- javascript load()方法在第一次加载资源后缓存资源
- express启动时缓存资源
- PHP中的子资源完整性和缓存破坏技术
- 将缓存控制设置为外部资源
- 使用XHR预缓存未按预期运行的资源
- Symfony辅助资源没有被浏览器缓存
- 以下可缓存资源有一个短的新鲜度生命周期-谷歌字体
- HTML5 -如何离线工作的资源是远程的,但缓存在清单
- 是否可以在过滤器中使用angularjs缓存的资源方法?