我的问题是关于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运行时。
答案 0 :(得分:5)
启用会话的缺点是运营成本更高。许多大型高流量Web站点不会保留匿名用户的会话数据以节省基础架构。随着带宽,CPU和内存变得越来越便宜,这一点越来越不重要。当然,这取决于您的预算,网站的功能以及您希望在预算范围内扩展的程度。
HTTP是无状态协议。这使得它易于实现且具有可扩展性,这是其取得惊人成功的两个原因。
过分依赖会话会使许多Web应用程序变得不必要地复杂且难以扩展。