从Next.js或MongoDB提供图像更好吗?

时间:2020-07-22 10:21:36

标签: mongodb image next.js cdn vercel

我有 Next.js Web应用程序托管在 Vercel 上,其数据库存储在 Mongo Cloud Atlas 上。我的目标是评估成本,速度和便利性

Next.js 可以通过将静态文件与网站itslef放在同一文件夹中来提供静态文件。话虽这么说,从next或Mongo提供图像的速度更快吗?

而且,从成本的角度来看,mongo不是免费的。

1 个答案:

答案 0 :(得分:2)

我在前端使用相同的堆栈Next.js,在后端使用MongoDB,这就是我解决问题的方法:

我将图像存储在CDN节点上(实际上,我的托管服务提供商会这样做,就我而言,我的Next.js应用未部署在 Vercel 上),并且在MongoDB中,我将http链接存储到一定的图像。

喜欢这个:

{
  _id: 123,
  sku: 321,
  media_uri: "https://...."
}

由于Akamai存储了静态资产(图像等),因此我始终有指向img的静态链接。是的,uri到图片根本没有改变,无论哪个CDN节点会回复它。我知道,这毫无意义,我不知道它怎么可能,但它确实有效。

这就是结果(就我而言,这非常快): enter image description here

在1920x1080(有时甚至是2K分辨率图片)上减少1s,当然,它们已经过优化。

关于价格,我的项目使用的是15+美元的VPS(前端+后端),因此我没有使用Atlas(相反,我正在使用mongo社区免费版)以及builddeploy手动Next.js。

实际上,我的大部分费用都是后端产生的。 Mongo处理10个不同集合中的数百万个文档,并处理繁重的aggregation查询。

如您所知,它不是localhost/test类型的项目。

所以我的观点是,如果将Vercel用作平台并使用CDN进行描述,那么,将其保存在src项目的相对文件夹中,并使用所有next.js的缓存和Vercel deploy的子句。