鍍金池/ 問答/HTML/ vuejs,前端如果保存了比較大量的數(shù)據(jù)要如何處理

vuejs,前端如果保存了比較大量的數(shù)據(jù)要如何處理

上傳財(cái)務(wù)賬單,前端在上傳文件的時(shí)候做了數(shù)據(jù)解析,將近30萬條,點(diǎn)擊上傳按鈕的時(shí)候需要將這30萬條數(shù)據(jù)傳給后端,
現(xiàn)在在上傳的時(shí)候會(huì)報(bào)Message length exceeded maximum allowed length.,而且解析文件的時(shí)候?yàn)g覽器非???有什么好的解決方案么?

onSelectOriginalFile(result) {
        this.notifySuccessParsing();
        this.data = UploadDataParser.parseShipmentCheck(result);//數(shù)據(jù)轉(zhuǎn)換
      }
      
submit() {

ReconciliationResource.import(this.data);//將數(shù)據(jù)傳給后端
}
回答
編輯回答
誮惜顏

javascript本身是單線程的,適合做IO操作,不適合做密集的計(jì)算工作;
不過把什么都放在后端做也不太靠譜,畢竟后端資源有限;
為了解決卡頓問題,可以試試worker

2017年6月13日 22:02
編輯回答
雨蝶

很簡單,把解析的工作交給后端,前端把整個(gè)文件傳上去就行了。js不適合用來干CPU密集型的任務(wù),你在前端用forwhile去解析文件是非常燒CPU的,除非你用WebAssembly(不過我也沒試過),而且這個(gè)過程還是同步的,所以你會(huì)覺得卡。

所以解決方案就是把文件傳給后端,后端用C或其它更合適的語言解析,然后再分頁傳回前端或干別的什么事。

一定要在前端燒客戶的CPU的話,可以考慮以下幾件事情:

  1. 改客戶端,不再使用普通的瀏覽器,改用Electron;
  2. 嘗試WebAssembly解析文件;
  3. 優(yōu)化文件結(jié)構(gòu),加速解析,如果堅(jiān)持使用普通瀏覽器做客戶端的話可以讓客戶先把文件轉(zhuǎn)成json格式(專門寫個(gè)工具什么的,我也不知道你們?cè)几袷绞巧叮?,然后前?code>JSON.parse,不過如果文件太大的話也要parse很久。

另外信息太大無法一次性發(fā)送的問題我沒遇到過,不過應(yīng)該不是什么很麻煩的事情,畢竟網(wǎng)盤傳大文件都沒問題,這個(gè)自行查閱吧hhh。我現(xiàn)在能想到的就是可以使用WebSocket流式上傳。

2017年11月2日 19:51
編輯回答
柒喵

文件上傳方式 提交到后端 后端處理很快的

2018年3月31日 06:32