我在Apache上使用TWebModule。如果我正确理解,如果所有先前创建的对象都在忙于处理请求,那么Apache将产生TWebModule对象的另一个实例。这样对吗?

我创建了自己的SessionObject并创建了一个TStringList来存储它们。 StringList是在包含TWebModule对象的源代码文件底部的初始化部分中创建的。我发现初始化可以多次调用(大概是Apache必须生成另一个进程时)。

有没有一种方法可以让我拥有一个全局“会话” TStringlist来保存所有会话对象?还是将会话信息存储在数据库中并为每个请求基于cookie检索它的正确方法“安全”?

我想要这样做的原因是减少数据库访问,而将会话信息保存在内存中。

谢谢。

最佳答案

正如Stijn所建议的那样,使用单独的存储来保存会话数据确实是最好的方法。更好的方法是尝试编写应用程序,以便Web浏览器包含设计中固有的状态。这将大大提高使用更少的硬件将应用程序扩展到成千上万的并发用户的能力。

Intraweb是一个不错的选择,但是在规模上存在问题,因为更多的并发用户,甚至是IDLE用户,都需要更多的硬件来支持。最好从一开始就设计一种使服务器尽可能在内部无状态运行的方法。当然,如果您有固定数量的用户,并且不期望任何增长,那么这就不成问题了。

关于delphi - TWebModule中的 session 管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/873170/

10-09 09:33