当我们在谷歌应用引擎中启用会话时,如:
// appengine-web.xml
<sessions-enabled>true</sessions-enabled>
app引擎会自动清理过期的会话,还是我们必须自己做?打开它们之后,我在数据存储区中看到一些条目正在生成,就像_ah_session一样,我想知道这些是不是?
由于
答案 0 :(得分:3)
是的,这些是会话条目。 Google的应用引擎文档包含以下内容:
该实现使用前缀为_ahs的密钥创建_ah_SESSION类型的数据存储区实体和memcache条目。
(http://code.google.com/appengine/docs/java/config/appconfig.html)
关于清理会话数据。我发现了以下两个讨论:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/4f0d9af1c633d39a http://www.mail-archive.com/google-appengine-java@googlegroups.com/msg01372.html
HTH, 史蒂夫
答案 1 :(得分:0)
来自Cleaning Up Expired Sessions From App Engine Datastore:
您需要将Google提供的清理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>