2012-03-29 114 views
2

我们需要为一个Google App Engine项目启用java servlet会话,但会话将仅用于一个servlet(应用程序的小型孤立部分)。Google App Engine Java会话延迟价格

尽管会话对象不会在其他servlet中使用,我们是否会在其他servlet中获得一些增加的延迟影响(由于会话memcache/datastore对象)?

有没有办法禁用某些servlet的会话支持?

+0

您是否真的测量过以确定是否属于这种情况?我觉得很难相信它会很明显。 – 2012-03-29 14:14:51

+0

我可以住一个阅读和1:10-100写,但不是每个请求写一个附加。 – Matija 2012-03-29 19:16:55

回答

2

没有办法在每个servlet的基础上启用会话。

此外,会话还会为每个请求消费一次来自memcache的读取和对数据存储的写入。所以这可能会花费很多。

此外,如果您的客户端不处理cookies(通常是通过REST设备),那么每个请求都会在数据存储中创建一个新的会话实体。这将会无限增长。

解决方案是推出自己的会话 - 创建servlet过滤器,该过滤器仅为特定路径/ servlet获取/设置cookie。

+0

等待,为什么要为每个请求写入数据存储?我明白从memcache和ev读取。从数据存储读取。 – Matija 2012-03-29 18:56:34

+0

更新到期时间。启用会话并查找数据存储中的_ah_session实体。 – 2012-03-29 19:38:54