继续完善我的轻缓存服务

2023-04-17 · 周一一般多云

晚上继续折腾我那用 nodeJS 的轻缓存服务,打算从原先执行 wget 获取图片文件的方式,切换到 nodeJS 原始的 https 库来实现,获取到文件之后再通过 writeFileSync 函数写入磁盘,并同时返回二进制内容给浏览器。

由于代码是科技 ChatGPT 生成的,难免会有一些问题。期间遇到了首次获取图片返回浏览器时出现白色方块的情况,感觉是获取到的 Buffer 有问题,但一直没找出原因,后续参考了 StackOverflow 的一些帖子,逐一尝试把我一段代码 res.setEncoding("binary") 删了就成功解决了问题,这段代码看上去是设置返回内容的格式,为啥去掉反而正常了呢?

https.get(imgUrl, (res) => {
  const { statusCode } = res;

  if (statusCode !== 200) {
    console.error(`图片获取失败,状态码: ${statusCode}`);
    reject(new Error(`Status code err: ${statusCode}`))
  }

  // ! 这里需要去掉,否则传给浏览器就会出现小方块
  // res.setEncoding("binary");
  let data: any[] = [];

  res.on("data", (chunk) => {
    data.push(chunk);
  });

  res.on("end", () => {
    resolve([Buffer.concat(data), res.headers]);
  });
}).on("error", (err) => {
  console.error(`请求图片时发生错误: ${err.message}`);
  reject(new Error(`Get file err: ${err.message}`));
});

...

ctx.body = buffer;

再进一步完善好的话,我希望可以直接转换成 webp 格式,以及生成多尺寸的缩略图,这样图片处理的逻辑就能单独从小窝主体业务里面抽离出来了,想更换尺寸提供给前端使用,也能更加得心应手。

Paul

Paul

特立独行的一只前端菜狗。这篇日记编写大概耗时了 8 分钟,内容均为个人原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!如本站内容对你有所帮助的话,不妨 捐助支持 一下?

近期评论

鲍小螺: 前辈多多指教!ahu: 后生可畏寻梦xunm: 真不错,板子很好看。timochan: 太惨了( ,更新暴毙,如果恢复没成功,数据也 dump 不出来鲍小螺: 在这部分对话中,广树和保罗继续讨论生活的不同方面。保罗提到了技术更新和国内的优秀 IT 技术。广树解释了在国内积累的经验如何在日本产生穿越的感觉,并表达了对于日本生活节奏的喜爱。他还提到了医疗水平的差异和对于生活方式的感受。保罗表示,通过动漫和现实的对比,艺术来源于现实,日本生活的确有着独特之处。他们讨论了国内的生活节奏和就医等方面的压力,以及个人选择的自由。最后,他们也谈到了不结婚不买房的选择和对于房价的困扰。鲍小螺: 该对话进一步讨论了房地产和税收的问题。保罗提到了国内的房地产税和增值税以及日本的固定资产税。广树解释了日本房地产税的收取方式,以及房产税对于国内房产的影响。他认为,与国内相比,日本的房子质量和服务更好。保罗提出疑问,为什么自己拥有的地也要交税。广树解释了类似增值税的原理,并指出在日本拥有房产是稳定安全的。最后,保罗表示从广树的角度来看,情况确实是如此。鲍小螺: 这篇文章的聊天记录也尝试过用 GPT 总结,结果并不是太好,不知道是不是 Prompt 的问题,实际出来的内容过于简练了,于是又耗费了半小时写完,呼~
奇趣音乐盒技术源于 Kico Player
Emmm,这里是歌词君