对于有点令人困惑的标题感到抱歉。不确定如何标题这个。我的情况是这样的 - 我有一个学术模拟工具,我正在开发一个Web前端。虽然基于C ++的模拟器对于小型系统而言在计算上非常高效(几百分之一到十分之一秒的运行时间),但它可以生成一个重要的(在Web应用程序术语中)数据量(~4-6mb)。
目前设置如下 -
此设置工作正常,但我遇到两个问题:
我的想法是,我可能希望将数据文件保留在服务器上,同时用户会话处于活动状态。这将使得能够仅加载用户想要查看的图的数据(并且可能在他们查看当前图的结果时在后台加载其他数据)。对于多次运行,我可以在服务器上放置多个数据集,以便用户在需要时可以下载。
但是,我对这一思路有一个很大的问题 - 如何识别(在php中)用户已离开服务器并删除数据?我不希望用户接管机器上的驱动器空间。对这种网络应用程序的最佳实践有何看法?
答案 0 :(得分:1)
问题#1,你真的没有任何选择。您已经在使用JSON,这是一种相对轻量级的格式。 4~6 MB的数据确实很多。顺便说一句,如果您认为PHP生成数据的时间太长,您可以使用C ++程序生成数据并使用PHP提供数据。您可以使用exec()来执行此操作。
然而,我不确定你的模拟是如何工作的,但是Javascript是一种图灵完备的语言,所以你可以在客户端产生一些/大部分/全部这些数据(无论什么使得更有意义)。在这种情况下,您可以节省大量带宽并显着减少加载时间 - 但请注意JS可能非常慢。
对于问题#2,如果您在服务器上保留数据,则需要跟踪活动会话(即:用户最后一次与服务器交互的时间),并设置对您有意义的超时应用。超时后,您可以删除数据。
要跟踪交互,您可以使用JS检查用户是否处于活动状态(通过发送heartbeats或类似内容)。