当我们在像谷歌应用程序引擎打开会议上:启用会话 - 我们必须自己清理它们吗?
// appengine-web.xml
<sessions-enabled>true</sessions-enabled>
做应用程序引擎自动清理过期会话,还是我们必须这样做自己?打开它们之后,我在数据存储中看到一些条目正在生成,如_ah_session,我想知道是否它们是?
谢谢
当我们在像谷歌应用程序引擎打开会议上:启用会话 - 我们必须自己清理它们吗?
// appengine-web.xml
<sessions-enabled>true</sessions-enabled>
做应用程序引擎自动清理过期会话,还是我们必须这样做自己?打开它们之后,我在数据存储中看到一些条目正在生成,如_ah_session,我想知道是否它们是?
谢谢
是的那些是会议条目。 Google的应用引擎文档包括以下内容:
该实现创建_ah_SESSION类型的数据存储实体和使用带有_ahs前缀的键的memcache条目。
(http://code.google.com/appengine/docs/java/config/appconfig.html)
至于清理会话数据。我发现下面的2讨论:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/4f0d9af1c633d39a http://www.mail-archive.com/[email protected]/msg01372.html
HTH, 史蒂夫
从Cleaning Up Expired Sessions From App Engine Datastore:
您需要配置由谷歌提供的清理servlet来定期运行。注意:servlet最多可以清理100个条目。请务必决定您需要多久调用一次,并根据需要确定时间间隔。
在web.xml:
<web-app...>
<servlet>
<servlet-name>_ah_sessioncleanup</servlet-name>
<servlet-class>com.google.apphosting.utils.servlet.SessionCleanupServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>_ah_sessioncleanup</servlet-name>
<url-pattern>/_ah/sessioncleanup</url;-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>session-cleanup</web-resource-name>
<url-pattern>/_ah/sessioncleanup</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
...
</web-app>
而且在cron.xml:
<cronentries>
<cron>
<url>/_ah/sessioncleanup?clear</url>
<description>Clean up sessions</description>
<schedule>every 15 minutes</schedule>
</cron>
...
</cronentries>
难道你作为项目承担清理这些实体的成本。我认为应该由基础设施来隐含地这样做,而不会成为开发者关心的问题。 – 2017-10-17 12:15:52