10

我刚刚开始使用 GAE,并且在途中遇到了问题。当我部署一个应用程序时,它似乎没有更新它,当我在浏览器中运行它时,它仍然运行旧版本。

我的简单代码是:

import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class AppEngineProjectServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/html");
    resp.getWriter().println("<p>Hi there</p>");
}

}

我在 Eclipse 中创建了一个新的 Web 应用程序项目,并获得了该代码。我刚刚将文本从“Hello World”更改为“Hi there”,当我部署它时,它仍然运行 Hello World!

我还尝试在部署新版本并将新版本设置为默认值时更改应用程序的版本,但似乎对我没有任何用处。有什么特别的原因导致我可能忽略了这种情况吗?

4

2 回答 2

5

经过长时间的聊天会话,OP问题已经解决。

要点:

  1. 在部署到云之前,始终在本地测试您的应用程序(使用Development Server )
  2. 注意浏览器缓存问题(用于Ctrl+F5刷新和丢弃本地缓存)
  3. 如果您想降低中断生产的风险,请在部署到云之前更改应用程序版本
  4. 部署后,在GAE上检查您的应用程序管理控制台
    1. Administration -> Admin Logs下检查新条目,如“部署新版本”
    2. Main -> Versions下确保访问最近部署的版本 Live URI [version].[app-name].appspot.com)。
    3. 再次,确保浏览器缓存不会妨碍(Ctrl+F5是你的朋友)
  5. 此外,为了避免运行时异常,如果您以需要构建新索引的方式更新持久层,请检查Data -> Datastore Indexes以确保没有索引仍在构建(这可能需要数小时甚至数天)。
  6. 完成测试后(确保 Live URI 版本正常工作),只需将新版本设为默认值(在Main -> Versions下)。
  7. 建议进行一些 A/B 测试。GAE 具有对流量拆分的内置支持。在您感觉 100% 确定它按预期工作(实际上是 200%)之前,不要急于求成并将新版本升级为默认版本。虽然您始终可以将默认版本更改为以前的版本,但如果您回滚,您的用户将不会高兴(相信我......去过那里,做到了)。
于 2013-10-16T20:56:54.750 回答
4

如果您想在上传后立即查看更改,请更改应用程序的版本,然后在管理控制台中更改默认设置。

当您更新时,App Engine 不会立即搜索并重新启动您的所有实例。这样的事情对于具有许多实例的大型应用程序的用户来说将是一种创伤,尤其是当该应用程序的实例启动缓慢时。

于 2013-10-16T20:23:29.400 回答