Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

310
Visualizações
Etag calculado personalizado para Express.js

Estoy trabajando en un servidor de imágenes local simple que proporciona imágenes a una aplicación web con algo de JSON. La aplicación web tiene una paginación que realizará una solicitud de obtención "/images?page=X&limit&200" a un servidor express.js que devuelve los archivos JSON en una sola matriz. Quiero aprovechar el almacenamiento en caché interno del navegador de modo que si un usuario va a una página anterior, express.js devuelve un ETAG. Me preguntaba cómo podría lograrse esto con express.js. Para esta aplicación, realmente solo quiero que el cálculo de ETAG tome en tres parámetros la página, el directorio y el límite (no es necesario considerar todo el cuerpo JSON). Además, esta aplicación es solo para uso local, por lo que quiero que el servidor haga el trabajo pesado, ya que pensé que sería más rápido que el navegador. Vi https://www.npmjs.com/package/etag que parece prometedor, pero no estoy seguro de cómo usarlo con express.js

Aquí hay un modelo del código express.js que tengo a continuación:

 var express = require('express'); var app = express(); var fs = require('fs'); app.get('/', async (req, res) =>{ let files = []; let directory = fs.readdirSync("mypath"); let page = parseInt(req.query.page); let limit = parseInt(req.query.limit); for (let i = 0; i < limit; ++i) { files.push(new Promise((resolve) => { fs.readFile(files[i + page * limit].name, (err, data) => { // format the data so easy to use for UI resolve(JSON.parse(data)); }); }); } let results = await Promise.all(files); // compute an etag here and attach it the results. res.send(results); }); app.listen(3000);

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Cuando su servidor envía una ETag al cliente, también debe estar preparado para verificar la ETag que el cliente devuelve al servidor en el encabezado If-None-Match en una solicitud "condicional" posterior.

Si coincide, el servidor responderá con el estado 304 ; de lo contrario, no hay ningún beneficio en el uso de ETags.

 var serverEtag = "<compute from page, directory and limit>"; var clientEtag = req.get("If-None-Match"); if (clientEtag === serverEtag) res.status(304).end(); else { // Your code from above res.set("ETag", serverEtag); res.send(results); }

El cálculo de serverEtag podría basarse en la hora de la última modificación en el directorio, de modo que cambie cada vez que cambie cualquiera de las imágenes en ese directorio. Es importante destacar que esto podría hacerse sin llevar a cabo las instrucciones fs.readFile de su código.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda