我有一個每天生成資料的系統,并將資料保存在json檔案中。檔案約120MB
我正在嘗試使用 nodejs 將資料發送到客戶端
router.get('/getData',(req, res) => {
const newData = require(`./newDataJson.json`)
res.json(newData)`});
然后從客戶端我使用 axios get 請求
const fetchNewData = async () => {
const { data } = await axios.get(`/api/getData/`);}
資料在生產中大約 3 分鐘內到達客戶端。在本地主機中幾秒鐘。
我的問題是是否可以縮短生產中的加載時間。
謝謝 !!
uj5u.com熱心網友回復:
我建議你使用流中的Node.js是適用于從服務器發送大量資料到客戶端。當您發送大量資料時,流很有用。您應該嘗試一下,并檢查添加后是否有任何改進。
const readStream = fs.createReadStream('./newDataJson.json');
return response.headers({
'Content-Type': 'application/json',
'Content-Disposition': 'attachment; filename="newDataJson.json"',
}).send(readStream);
此外,正如安迪建議的那樣,這可能是一種根據小時將檔案資料劃分為較小磁區的方法。
uj5u.com熱心網友回復:
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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333160.html
標籤:javascript 节点.js json 表达 公理
