会话已启用 - 我们是否必须自行清理它们?

时间:2010-04-26 03:47:46

标签: google-app-engine

当我们在谷歌应用引擎中启用会话时,如:

// appengine-web.xml
<sessions-enabled>true</sessions-enabled>

app引擎会自动清理过期的会话,还是我们必须自己做?打开它们之后,我在数据存储区中看到一些条目正在生成,就像_ah_session一样,我想知道这些是不是?

由于

2 个答案:

答案 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>