GAE HTTP会话;为什么禁用它?

时间:2013-02-05 03:29:30

标签: java google-app-engine httpsession

我的问题是关于Java GAE应用程序中的HTTP会话(link)。在默认版本的 appengine-web.xml 中,会话被禁用。此HTML注释位于XML文件的每个起始版本中:

  <!--
    HTTP Sessions are disabled by default. To enable HTTP sessions specify:

      <sessions-enabled>true</sessions-enabled>

    It's possible to reduce request latency by configuring your application to
    asynchronously write HTTP session data to the datastore:

      <async-session-persistence enabled="true" />

    With this feature enabled, there is a very small chance your app will see
    stale session data. For details, see
    http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
  -->

我显然理解将<sessions-enabled>设置为true的好处:我们可以利用servlet中的HTTP会话。然而,这让我想知道为什么有人会首先想要启用会话。启用会话的缺点是什么?有哪些用例可以让他们禁用?

我不确定这个问题是否与GAE的Python或Go运行时相关,我只了解Java运行时。

1 个答案:

答案 0 :(得分:5)

启用会话的缺点是运营成本更高。许多大型高流量Web站点不会保留匿名用户的会话数据以节省基础架构。随着带宽,CPU和内存变得越来越便宜,这一点越来越不重要。当然,这取决于您的预算,网站的功能以及您希望在预算范围内扩展的程度。

HTTP是无状态协议。这使得它易于实现且具有可扩展性,这是其取得惊人成功的两个原因。

过分依赖会话会使许多Web应用程序变得不必要地复杂且难以扩展。