在NodeJS/Express中如何缓存图片?

5
这个Web应用程序从网络上获取图像,特别是网站图标。因此,每次刷新页面时,都会向网站发出请求,并重新获取图标。
这是我传递URL的函数;favicon()一个库,从网站/页面中抓取它,并返回它。
router.get('/feedicon', function(req, res) {

    favicon(req.query.url, function(err, icon) {

        if (icon) {
            res.send(icon);
        } else {
            res.status(500).send('No icon found');
        }

    });
});

现在如果找到有效的icon文件,最好的方法是:

  • 确保存在一个/cache目录/创建它(或者如果不可能则返回错误);
  • 检查icon是否在/cache目录中;
  • 如果不在,则使用某种独特的时间戳保存它,并从那里提供服务;
  • 如果在,则直接从那里提供服务。

我不想安装库来完成这个,实际上我遇到的问题是如何以最佳方式“唯一地为缓存图像添加时间戳”,以便确保提供正确的文件..?

此外,如果我使用哈希作为文件ID,会担心性能问题..?

关于快速缓存此类文件的最佳实践是什么?我很难找到相关信息,似乎没有人需要在NodeJs / Express中缓存动态图像..?

1个回答

14

这里是一个简单的例子,缓存了我存储图像的public文件夹。

const cacheTime = 86400000 * 30 // the time you want
const path = require('path')
.
.
.
.
app.use(express.static(path.join(__dirname, 'public'), {
 maxAge: cacheTime
}))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接