2017-06-06 50 views
0

我已經創建了一個node-webkit應用程序,它可以將數千張圖像(確切地說是7,480)從磁盤載入HTML表格。大約3500張圖像後,加載停止。在控制檯中,我看到ERR_INSUFFICIENT_RESOURCES。根據任務管理器,我的應用程序的內存(私人工作集)在這種情況發生時約爲1.37 GB。我怎樣才能防止這種情況發生?有沒有辦法讓我增加這個限制?我應該提供什麼額外的細節來獲得幫助?Node-Webkit應用程序:從磁盤載入成千上萬的圖像

+0

真正這裏的問題是,爲什麼你需要一次加載所有的人?只有在你的用戶界面中加載任何用戶可以在任何時候合理接受的內容。 – OliverJ90

+0

圖像顯示正在經歷機械過程的表面上的不同點。用戶需要能夠看到他們全部以識別某些缺陷。有沒有辦法讓我在視圖中加載圖像,並在它們不存在時「卸載」它們? –

+0

好的。是的,有一種方法,但你如何實現這一點取決於你如何將所有這些放在一起。實際上,當用戶在「視口」周圍移動時,您想要對圖像進行某種類型的JIT加載,並將其移除並添加。它比一次加載更高效。 – OliverJ90

回答

1

在過去,當我遇到類似的問題時,我將圖像放在內存中,並在滾動查看時將它們插入到dom中。

我創建了兩個隊列,一個用於圖像而不是向下滾動,另一個用於滾動過去的圖像。這樣,只有可見的圖像出現在頁面中。

如果下載時間是一個問題,請嘗試將它們加載到內存中,看看會發生什麼,您遇到的限制有可能是將圖像放在dom中,而不一定將圖像加載到內存中,值得一試。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/Image

var myImage = new Image(100, 200); 
myImage.src = 'picture.jpg'; 
+0

你能告訴我更多關於你如何插入視圖的信息嗎?這正是我正在尋找的。另外,我用這種方法將圖像加載到內存中:'函數預載(){ \t \t \t \t爲(I = 0;我

+0

關於我在DOM中放置圖像時遇到的限制是正確的。我結束了使用這個懶加載插件:http://appelsiini.net/projects/lazyload/ –

+0

真棒,他們在頁面中的機制基本上是一個前面的數組,和一個數組後,然後計算滾動每個元素的位置,並在頁面移出視圖時將其從頁面中移除,並將新頁面放在頁面中,因爲您將要將它們滾動到視圖中 –

相關問題