/ / Manter variáveis ​​carregadas / armazenadas em cache para que possam ser usadas por várias solicitações. - javascript, node.js, armazenamento em cache

Mantendo as variáveis ​​carregadas / armazenadas em cache para que possam ser usadas por várias solicitações. - javascript, node.js, armazenamento em cache

Não tenho certeza se isso é possível, estou assumindoalgo assim é. Eu tenho alguns arquivos JSON contendo uma série de objetos JSON, cada um com um ID exclusivo. Gostaria de poder usar um aplicativo Node para ler esses objetos e retornar todos os objetos com um ID maior que um parâmetro fornecido.

ie / after / 20 retornaria todos os objetos JSON do arquivo cujo ID é maior que 20.

Esses pedidos estarão acontecendo com muita frequência,por muitos usuários diferentes. Portanto, eu queria saber se existe uma maneira de armazenar ou armazenar em cache esses arquivos de alguma forma, o que significa que eles não precisam ser carregados repetidamente. Portanto, tornando o processo mais rápido e mais eficiente.

Respostas:

1 para resposta № 1

Aqui está uma solução que manterá todo o conjunto de dados na memória. Estou assumindo que você tenha pelo menos o nó 0.5 (para exigir json), que os dois arquivos json são nomeados json1 e json2 e eu vou usar expressar por causa de seu roteamento.

var express = require("express"),
http = require("http"),
json1 = require("./json1.json"),
json2 = require("./json2.json");

var app = express();

//Express config

app.configure(function(){
app.set("port", 8080 );
//...
app.use(express.bodyParser());
app.use(express.methodOverride());
//Right before the router, add a middleware to expose your objects
app.use(function(err, req, res, next){
req.json1 = json1;
req.json2 = json2;
next();
});
app.use(app.router);
//...
});

Por fim, qualquer roteador terá acesso aos dois objetos json.

app.get("/after/:id", function(req, res){
var objects = req.json1,
id = req.params.id,
result = objects.filter(function(obj){ return obj.id >= id; });
res.json(200, result);
});

0 para resposta № 2

Até onde eu sei, se você usar a função node.js "s" require "para carregar um módulo (ou arquivo JSON, no seu caso), ele será armazenado em cache com base em seu nome de arquivo.

Vejo Doc da API do Node.JS sobre isso.

Estou usando essa técnica em um projeto com muitos arquivos pequenos e todos eles são armazenados em cache após o primeiro carregamento.