我有一个使用GWT + AppEngine构建的应用程序,用于自动创建测验:
主网页上有一个“创建新测验”按钮。
单击该按钮可激活后端的服务,即创建测验并将其返回。
然后主页面显示测验。
测验创建需要花费大量时间,因此我想在用户回答测验时预先加载测验:在显示测验后,我在后端激活另一项服务,创建下一个测验并保持它在一个局部变量中。当用户再次点击“创建新测验”时,后端会注意到有一个预先创建的测验,并立即返回。
这在我的计算机上的开发模式下运行良好,但在部署到AppEngine时不起作用。
似乎后端有几个副本及其所有局部变量,因此“preload”服务在一个副本上运行,“return new quiz”在另一个副本上运行,并且不使用预载测验。
这是这样吗?我的后端有多少份?如果数字是常数,我可以多次运行“预加载测验”,每个副本一次。答案 0 :(得分:1)
该数字不是常数,您不应该假设您的后端服务器可以以这种方式工作。
您必须使用提供的服务(如内存缓存和数据存储区)在请求之间进行通信。您基本上应该假设每个请求都由一个完全不同的,全新的应用程序实例来回答。普通内存中的变量在请求之间不能正常工作。