在Java Web应用程序中,Java servlet创建唯一的jsessionid,该cookie作为cookie传递到客户端浏览器,以跟踪第一个请求之后的客户端的后续请求。但是,当Cookie被禁用并且由于安全策略而不允许URL重写时,我的理解是Java servlet会为来自同一客户端的每个请求创建一个新的会话对象。它是否正确?这是否意味着大量的服务器内存浪费(每个会话对象的内存分配过多,永远不会再使用和过多的垃圾收集)?如何识别网站访问者禁用cookie并禁止URL重写?
一种解决方案是在这种情况下使用客户端的IP地址和用户代理字符串来唯一标识用户并存储在数据库中。这是正确的解决方案?
以上情况在搜索引擎僵尸程序中相当常见,它们在访问网站时通常会发出数千次频繁的请求。
任何其他想法为基于Java的Web应用程序的这个问题制定适当的解决方案?
很好的答案。我会加上一个压力:你不能通过IP + USER_AGENT来识别某人。 – 2011-03-27 11:27:19