雑感ブログ

日常を少しずつ。

vue.js+bootstrapvueで大きいデータを扱う場合の注意事項

1.実際に起こったこと

vue.js+bootstrapvueでAPIで、サーバから1万レコード規模のjsonデータを読み込むとメモリを想像以上に喰います。

 

どのくらいメモリを使われるかというと、APIで取得時のjsonデータは2mb程度でしたが、vue.jsに読み込むとメモリが200mb程度に急増します。

 

2.なぜなのか?

いろいろ調べてみると以下のサイトに書かれてる通り、vue.jsはリアクティブにデータ操作できるようにdataに変数をセットする際に、色々情報が付与されます。これによってデータが急増します。

https://github.com/vuejs/vue/issues/4384
https://vuedose.tips/tips/improve-performance-on-large-lists-in-vue-js/

 

3.対策

対策はdataにデータを保存する前に、Object.freeze()してObjectを変更できなくするこ!

簡単ですが効果はバツグンでした。これだけでメモリ使用量は急増しなくなりました。

 

4.まとめ

vue.jsで大きいデータを扱う場合は、Object.freeze()をつかう!