抱歉标题有点混乱。我不确定该如何命名。我的情况是这样的:我有一个学术仿真工具,正在开发web前端。虽然基于C++的模拟器在小型系统中的计算效率非常高(几百分之一到十分之一秒),但它可以生成大量数据(约4-6MB),在Web应用程序中算是相当庞大。
目前的设置如下:
1. 用户访问index.html文件。页面左侧有一个交互式表单,用户可以输入模拟参数。右侧是他们创建的系统的表示形式,以及一些灰色选项卡,用于显示各种模拟数据。
2. 用户点击“运行模拟”。这将通过AJAX调用将请求的模拟参数提交到runSimulation.php文件。runSimulation.php根据提交的数据创建一个输入文件,然后使用此输入文件运行模拟器。模拟器会输出各种输出文件中的4-6MB数据。
3. 一旦模拟完成运行,浏览器的响应是另一个javascript函数,该函数调用returnData.php文件。这个php脚本将输出文件中的数据打包为JSON数据,将JSON数据返回给浏览器,然后删除数据文件。
4. 然后将此响应数据提供给浏览器的javascript中的一些绘图对象,并且选项卡变为活动状态。然后用户可以打开和交互绘制的数据。
这个设置还算可以,但我遇到了两个问题:
1. 返回的数据很慢-返回4-6MB的数据可能需要一段时间才能加载。(这些数据正在进行gzip压缩,这大大减少了其大小,但在较慢的连接上仍可能需要20多秒)
2. 下一个目标是允许用户绘制多个模拟运行结果以便比较结果。
我的想法是在用户会话处于活动状态时将数据文件保留在服务器上。这将使用户能够仅加载他们想要查看的图表的数据(并且在查看当前图表的结果时,也许可以在后台加载其他数据)。对于多次运行,我可以有多个数据集坐在服务器上,等待用户下载(如果/当需要)。
然而,我有一个很大的问题:如何识别(在php中)用户已经离开服务器,并删除数据?我不希望用户占据机器上的驱动器空间。对于这种Web应用程序的最佳实践有什么想法吗?
目前的设置如下:
1. 用户访问index.html文件。页面左侧有一个交互式表单,用户可以输入模拟参数。右侧是他们创建的系统的表示形式,以及一些灰色选项卡,用于显示各种模拟数据。
2. 用户点击“运行模拟”。这将通过AJAX调用将请求的模拟参数提交到runSimulation.php文件。runSimulation.php根据提交的数据创建一个输入文件,然后使用此输入文件运行模拟器。模拟器会输出各种输出文件中的4-6MB数据。
3. 一旦模拟完成运行,浏览器的响应是另一个javascript函数,该函数调用returnData.php文件。这个php脚本将输出文件中的数据打包为JSON数据,将JSON数据返回给浏览器,然后删除数据文件。
4. 然后将此响应数据提供给浏览器的javascript中的一些绘图对象,并且选项卡变为活动状态。然后用户可以打开和交互绘制的数据。
这个设置还算可以,但我遇到了两个问题:
1. 返回的数据很慢-返回4-6MB的数据可能需要一段时间才能加载。(这些数据正在进行gzip压缩,这大大减少了其大小,但在较慢的连接上仍可能需要20多秒)
2. 下一个目标是允许用户绘制多个模拟运行结果以便比较结果。
我的想法是在用户会话处于活动状态时将数据文件保留在服务器上。这将使用户能够仅加载他们想要查看的图表的数据(并且在查看当前图表的结果时,也许可以在后台加载其他数据)。对于多次运行,我可以有多个数据集坐在服务器上,等待用户下载(如果/当需要)。
然而,我有一个很大的问题:如何识别(在php中)用户已经离开服务器,并删除数据?我不希望用户占据机器上的驱动器空间。对于这种Web应用程序的最佳实践有什么想法吗?