加载100mb+ json文件nodejs的最佳方式



我有一个每天生成数据的系统并将数据保存在json文件中。文件约120MB

我正在尝试将数据与nodejs发送到客户端

router.get('/getData',(req, res) => {
const newData = require(`./newDataJson.json`)
res.json(newData)`});

然后从客户端使用axios get request

const fetchNewData = async () => {
const { data } = await axios.get(`/api/getData/`);}

在生产环境下,数据到达客户端大约需要3分钟。

我的问题是是否有可能在生产中缩短加载时间。

谢谢! !

我建议你在Node.js中使用流,它适合将大数据从服务器发送到客户端。当您发送大量数据时,流非常有用。你应该试一试,看看添加这个后是否有任何改进。

const readStream = fs.createReadStream('./newDataJson.json');
return response.headers({
'Content-Type': 'application/json',
'Content-Disposition': 'attachment; filename="newDataJson.json"',
}).send(readStream);

而且,正如Andy建议的那样,这可能是一种基于小时将文件数据划分为更小的分区的方法。

120 MB远远超过了初始页面加载时间的限制。最好的做法是将文件分割成更小的块:

1。在此之后,用户将看到加载的页面,您需要(我假设)的数据的一部分。因此,最初只发送小块以使数据可见。保持它小,这样数据就不会阻塞加载和第一次绘制。

2。保持以较小的部分发送其余的数据,或者按需以块加载它们,例如使用分页或滚动事件。

您可以在接收/保存数据时开始拆分数据。

从api加载数据(无限滚动)https://kennethscoggins.medium.com/using-the-infinite-scrolling-method-to-fetch-api-data-in-reactjs-c008b2b3a8b9

加载时间与响应时间的信息https://www.pingdom.com/blog/page-load-time-vs-response-time-what-is-the-difference/

最新更新