1

我的问题是关于 Java GAE 应用程序(链接)中的 HTTP 会话。在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 运行时。

4

1 回答 1

5

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

HTTP 是一种无状态协议。这使得它易于实施且非常可扩展,这是其惊人成功的两个原因。

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

于 2013-02-05T03:40:58.763 回答