Tag: caching控制

对elasticsearch的GET请求中的'request_cache = true'不会创buildcaching

我有一个需要很长时间处理的查询。 因此,我想从elasticsearch获取caching的结果。 我发现的是,我必须: 传递size=0来获得caching的结果 或者在查询中传递request_cache=true 我的示例GET看起来像这样: curl 'localhost:9200/documentrevisions/_search?request_cache=true' -d '{"size": 10, "query": { }}' 我也发现了这个GitHub PR ,他们正在讨论这个问题。 但是,当我将size设置为大于0时,elasticsearch不会创buildcaching,即使在查询中传递request_cache=true时也是request_cache=true 。 这是一个错误? 或者我怎样才能确保我只是得到一定的结果,但仍然能够caching这些? 我正在使用NodeJS的弹性JS库。

可以将数据caching到节点应用程序中的过程对象中

当我用节点(Express,实际上和GitHub ^ _ ^中的开源)做一个博客应用程序时,我发现全局对象“process”(或其他全局对象)可以被每个用户访问,这里是testing中间件: 也许我应该直接放置代码: app.use(function (req, res, next) { if(req.session.user.login){ if(!process.name) { process.name = {length: 0}; } if(Object.keys(process.name).indexOf(req.session.user.id) === -1){ process.name['length'] += 1; process.name[req.session.user.id] = req.session.user.username; } console.log('######################'); console.log('Connection count:%d',process.name['length']); console.log('Memory usage:%s', parseInt(process.memoryUsage().heapUsed)/(1024*1024),'MB'); } next(); }); 所以,我认为是否有一个捷径将数据从某处(我的情况是MongoDB的mongoose数据)存储到内存中,而不是使用redis(这对我来说更多的是学习成本),而只是将数据caching到进程中 – – 节点中的全局对象。 我担心内存泄漏(或称为“stackoverflow”?+ _ +),所以我通过添加下面的代码来testing内存的使用情况: console.log('Memory usage:%s',parseInt(process.memoryUsage().heapUsed)/(1024*1024),'MB'); 日志显示,当有两个用户login时,使用量约为20MB。 顺便说一句:据我了解,节点V8引擎限制内存最大使用量约为700M,这是否影响? 提前致谢; (忽略我可怜的英语;-))

Node.js HTTP代理caching:任何指南和最佳实践?

是否有任何指导方针/最佳实践来实现在Node.js中编写的http代理caching? 这是更好的内存加载caching,磁盘存储caching或混合? 对此有何build议? 谢谢

caching来自Node / Express / Redis的gzip响应

我的要求是每天生成几个用户访问的报告。 数据仅每24小时更换一次。 目前,我使用Node来根据存储在Redis中的数据创build报告,并生成使用Express的Compress()方法压缩的响应。 创build和压缩这些响应需要大约40秒(响应大约是4MB的JSON未压缩)。我的首选是将这些响应caching/存储在文件系统或内存中一段时间​​。 我不想为此仅实现Varnish或其他反向代理,所以任何人都可以提出另一种有效caching响应的方法吗? 提前致谢。

在expressjs构buildpipe理面板,计数用户没有查询很多的最佳方式?

所以我正在为我的应用程序构build一个pipe理面板。 在pipe理员的主页上,我想显示一些关于使用情况的统计信息。 例如:24小时,7天,30天注册,所有时间注册方法:用户/密码,脸谱,微博等 现在在我的admin.index路由器中,我正在对我的db(使用admin.index mongodb)进行asynchronous调用以获取所有计数,并在最终的callback函数中呈现页面。 exports.index = function(req, res){ async.parallel({ // https://github.com/caolan/async#parallel // counts number of users in date ranges all_time: function(next) { console.log('querying'); User.count({}, function (err, count) { if (err) return next(err); next(null, count); }); }, past_day: function(next) { console.log('querying'); User.count({'created_at': {$gte: yesterday}}, function(err, count) { if (err) return next(err); next(null, count); }); }, […]

添加caching到node.js MongoDB API?

我的node.js API对MongoDB运行一些昂贵的“组”查询,例如: app.get('/group/:collection', function(req, res) { […] db.collection("indicators").group(keys, conds, { value : 0 } […] 什么是一些相当容易实现的caching解决scheme在这里?

集合中的更改后,没有更新的mongoosecaching

我有一个基于MEAN堆栈的应用程序,最近,我试图实现一些caching机制来caching查询结果。 我实施mongoosecaching 。 mongoosecachingconfiguration require('mongoose-cache').install(mongoose, {max: 150, maxAge:1000*60*10}); 我在样本采集中有两个文件说 {name:'dale', dep:2}, {name:'john', dep:4} 我启用了mongoose -cache的查询, maxAge是10分钟 。 sample.find().cache().exec(function (err, doc) { // returns 2 document }); 接下来,我再插入一个文件{name:'rasig', dep:4}并执行相同的查询 sample.find().cache().exec(function (err, doc) { // returns 2 document instead of 3 }); 我在10分钟内执行了两次相同的查询,虽然集合发生了变化,但我得到了以前的结果。 一旦集合发生变化,是否有办法删除caching的结果? 如果没有,你可以build议一些其他的实施相同的。

如何保持在nodejs中的多个运行之间的临时文件?

我有一个生成文件的小节点模块。 因为它真的很慢,并会产生相同的input相同的结果,我想保持与控制散列最后编译在一起。 现在的问题是我需要在哪里放置临时文件,以便于访问? 如果依赖于我的模块的主节点应用程序重新启动,caching也应该工作。

Rails项目中的节点模块可能caching旧版本?

我正在使用flexicious-react-datagrid和flexicious-react-datagrid-styles节点模块的Rails项目。 这些模块在package.json中被引用为: "dependencies": { … "flexicious-react-datagrid": "file:./npm_libs/flexicious-react-datagrid", "flexicious-react-datagrid-styles": "^1.2.0", … } 我遇到的问题是手动将其中一个模块更新为许可版本。 公共的flexicious-react-datagrid模块是一个试用版,经过一段时间的处理后,它现在已经过期,并且在尝试加载页面时出现一个带有ErrorCode103的popup窗口,并且一些无限循环运行,因此页面变得卡住永远。 Flexicious团队通过提供包含许可代码的react-datagrid.min.js文件来提供许可版本。 即使我在节点模块中将其replace,错误仍然会发生。 这使得它看起来像caching旧的代码服务器端,因为将调用ErrorCode103popup窗口的代码应该来自被replace的代码。 我已经尝试加载在隐身或其他浏览器没有运气。 我们的项目使用browserify,我有一些怀疑(但不确定),这可能是什么caching模块。 到目前为止,我还没有试图find造成这个问题的原因。 我的package.json: { "name": "redacted", "version": "0.0.1", "description": "redacted", "author": "redacted", "license": "SEE LICENSE IN LICENSE.TXT", "babel": { "comments": false, "presets": [ "es2015", "react" ] }, "devDependencies": { "browserify": "~> 14.0.0", "browserify-incremental": "^3.1.0", "browserify-css": "0.10.0" }, "dependencies": […]

阻止RequireJScachingNodej上所需的脚本

我正在使用像airbnb的rendr ,即我自己的实现共享客户端和服务器之间的主干代码 ,以使用在客户端上使用相同的骨干模型,视图,集合和模板在服务器上构build完整的HTML。 我的文件/模块被定义为requirejs模块,这样我可以轻松地在客户端上共享它们。 在开发模式中,当我刷新浏览器(不重新启动服务器)时,我想让requirejs从光盘中重新读取/重新加载任何模块,所以我得到我的服务器渲染使用最新的模板和JavaScript来最终为我提供最新的HTML。 当在服务器上使用requirejs和nodejs时, 将下面的参数添加到 urlArgs中的技巧不起作用,即服务器不会从光盘上重新加载/重新获取任何模块 urlArgs: "bust=v2" 我想知道,如果重新加载/ refetching从磁盘空间requirejs模块,而不重新启动服务器是可能的节点? 具体来说,这对于模板的require-text插件将非常有用。 此外,将重新加载仅限于一组受限制的模块将会很好。