對不起,有些令人困惑的標題。不確定如何標題。我的情況是這樣的 - 我有一個學術仿真工具,我正在開發Web前端。雖然基於C++的模擬器在小型系統的計算上效率很高(幾百分之一秒到十分之一運行時),但它可以產生一個重要的數據量(約4-6mb)。如何處理服務器端模擬的大型數據集 - >客戶端瀏覽器
目前的設置如下 -
- 用戶訪問index.html文件。此頁面左側有一個交互式表單,用戶可以在其中輸入模擬參數。右側是他們正在創建的系統的表示,以及用於各種模擬數據圖的灰色標籤。
- 用戶點擊「運行模擬」。這通過AJAX調用將請求的sim參數提交給runSimulation.php文件。 runSimulation.php根據提交的數據創建一個輸入文件,然後使用這個輸入文件運行模擬器。模擬器在各種輸出文件中分出4-6mb的數據。
- 一旦模擬運行完畢,對瀏覽器的響應是另一個調用文件returnData.php的javascript函數。這個PHP腳本將輸出文件中的數據打包爲JSON數據,將JSON數據返回給瀏覽器,然後刪除數據文件。
- 然後將此響應數據反饋給瀏覽器javascript中的一些繪圖對象,並且繪圖選項卡變爲活動狀態。用戶然後可以打開並與繪製的數據交互。
這種設置工作正常,但是我遇到了兩個問題:
- 返回數據是回來可能需要一段時間來加載的慢4-6mb。 (該數據正在被gzip壓縮,大大減少了它的側面,但在較慢的連接上仍然需要20多秒)
- 下一個目標是允許用戶繪製多個模擬運行,以便他們可以比較結果。
我的想法是,我可能想保持數據文件在服務器上,而用戶會話是活動的。這將使得能夠僅加載用戶想要查看的圖的數據(並且當他們查看當前圖的結果時可能在後臺加載其他數據)。對於多次運行,我可以在服務器上安裝多個數據集,以備用戶在需要時下載。
但是,我有這個思路的大問題 - 我如何識別(在PHP中)用戶已經離開服務器,並刪除數據?我不希望用戶接管機器上的驅動器空間。有關這種Web應用程序的最佳實踐的任何想法?