簡體   English   中英

ElectronJS 緩存

[英]ElectronJS cache

我正在使用 Electron JS 和 react JS 構建一個離線應用程序。 在啟動步驟中,首先是加載一個巨大的文件(超過 1 GB 並且無法拆分),因此我必須等待大約 50-60 秒才能完全加載該文件。 有沒有辦法在第一次啟動時加載它,然后將其保存到緩存中,這樣下次我啟動我的應用程序時就不會花那么多時間了?

在下一次應用啟動之前,您無法在 memory 中緩存數據。 當應用程序關閉時,數據就消失了。 解決的方法不多:

方法一(緩存數據直到應用關閉):

在啟動時異步讀取文件(因此它不會凍結應用程序),並通過將數據存儲在變量中將其緩存在 memory 中。 該應用程序將占用超過 1GB 的 RAM,並且當應用程序關閉時緩存將消失。

方法二(分塊讀取數據):

您需要一次處理整個數據集嗎? 如果沒有,請不要讀取整個文件,將其分成多個塊(文件)並在運行時需要時讀取特定文件。

方法3(邊讀邊計算):

You you only need the data to calculate something once, read the json from the drive with a stream and perform computations in real time on every JSON object, during the stream. 到 stream 結束時,所有需要的計算都將完成,應用程序將不需要約 1 GB 的 RAM。 有幾個模塊: stream-jsonbfjbig-json

通常,您首先不需要整個文件。 您能否分享這個大文件的性質以幫助更好地理解問題?

memory 中的“緩存”是不可能的,當應用程序退出時 memory 將被清除。 這就是 memory 的工作原理。

但問題是,將 1GB 讀入 memory 不應該花費 60 秒,這太長了。 我想您還需要找出其他瓶頸。

我的建議是嘗試同步讀取文件,並測量實際花費的時間。 您可以使用 Node.js 的"perf_hooks"內置模塊來測量時間。 我猜,將文件加載到 memory 最多大約需要 1 秒,所以 59 秒用於做其他事情。 問題很可能在其他地方。

現在,如果瓶頸確實是將文件從磁盤加載到 memory,那么mmap系統調用可能就是您所需要的。 不過那是另一個話題了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM