如何缓存node.js中的内部文件
How to cache internal files in node.js?
我一直在使用路由功能,如以下一个来重复我的网站的总体布局(A.jade):
exports.overview = function(req, res, next) {
res.render('A', {
main: jade.renderFile('./views/B.jade')
});
};
但是,当我尝试缓存视图时:
app.use(express.static(__dirname + '/public'));
app.enable('view cache');
,似乎只有A.jade被缓存,而B.jade是实时渲染的。我之所以知道这一点,是因为我在更新B.jade时不必重新启动服务器。
是否有一种方法可以让我在这个设置中缓存B.jade ?
除了视图,我们如何在静态公共目录中缓存其他资源,如CSS, JS,媒体文件等?
创建缓存变量
var cachedFiles = {};
exports.overview = function(req, res, next) {
var file = './views/B.jade';
cachedFiles[file] = cachedFiles[file] || jade.renderFile('./views/B.jade');
res.render('A', {
main: cachedFiles[file]
});
};
如果你需要在渲染函数中添加变量,那么使用memoize
npm install memoizee
然后var memoize = require('memoizee');
var memoizeRenderFile = memoize(jade.renderFile);
exports.overview = function(req, res, next) {
res.render('A', {
main: memoizeRenderFile('./views/B.jade', {v:100})
});
};
你可以使用下面的代码轻松地缓存你的静态文件,注意你需要NPM安装下面的包
var staticCache = require('express-static-cache');
app.use(staticCache(__dirname + '/public'), {
maxAge: 365 * 24 * 60 * 60
})
在我看来,真的没有必要缓存静态文件,因为它们在异步读取文件时不会占用太多cpu。如果缓存它们,它们将会占用内存。
相关文章:
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- Knockout.JS标签在foreach内部不起作用
- 为什么可以't我从hamsters.js内部运行我的方法
- 了解modal.js内部的事件
- 主干.js内部触发事件功能.它是如何优化的
- 挖空 JS 内部和外部绑定
- JS内部函数未在IE8上执行
- 如何在循环Node.js内部调用asyn函数
- Node.JS内部的回调
- Opera不调用flash的ExternalInterface.callback()函数在js内部由flash调用的回调
- 如何从js内部开始点击或更改函数
- 从函数js内部获取变量值
- 从JS内部代码块调用外部JS函数
- 关于node.js内部异步I/O机制的困惑
- JavaScript (node.js)内部函数调用时无法访问变量.now.js
- JS内部<身体>没有在FF 4上工作
- 如何在构建时更改客户端JS内部的URL
- 如何在angularjs中从app.js内部的控制器定义变量
- Javascript倒计时计时器+JS内部的PHP代码
- 这个关键字在方法的 js 内部方法中的逻辑是什么