基于 URL 中的 :foo 提供图像

Serving images based on :foo in URL

我试图在提供图片时限制数据使用,以确保用户不会在移动设备上加载臃肿的页面,同时仍保持在桌面设备上提供更大图片的能力。

我正在查看 Twitter 并注意到他们将 :large 附加到 url

的末尾

例如https://pbs.twimg.com/media/CDX2lmOWMAIZPw9.jpg:large

我真的很好奇这个请求是如何处理的,如果你直接转到那个 link 页面上没有脚本,所以我假设它是在服务器端完成的。

可以在 Node 实例上使用 Restify/Express 之类的东西来完成吗?最重要的是,我真的很好奇它是如何完成的。

是的,可以在 Node.js 中使用 Express 来完成。但是,它不能使用 express.static() 完成,因为它不是静态请求。相反,接收函数必须通过解析查询字符串(或任何 :large 是什么)来处理请求,以便动态响应适当的图像。

一般来说,图像已经在用户上传阶段预先生成了一组不同大小(例如小、中、大、原始)的图像,并且该函数检查查询字符串以确定要发送哪个静态请求回应。

与在原始图像的每个请求上生成适当大小的图像服务器端相比,这是一种性能更高的解决方案,但如果服务器需要生成非有限集,有时则需要动态方法图像大小。