hunchentoot session- v。线程局部化值(ccl)

时间:2017-08-14 21:32:12

标签: webserver lisp

我正在使用hunchentoot会话值来使我的服务器代码重入。问题是,根据定义,会话值在会话期间保留,即从同一浏览器到下一个浏览器的一次调用,而我真正想要的是线程特定重入的数量,以便所有调用之间的值消失 - 我希望将每次点击视为单独的“从头开始”事件,即使它们来自同一会话。很容易让驱动程序设置为nil,或删除我的会话值,但我想知道是否有“正确”的方法来做到这一点?我没有在文档中看到任何基于线程的模拟hunchentoot:session-value。

提前感谢您提供的任何指导。

1 个答案:

答案 0 :(得分:2)

如果您希望某个值为"特定于线程"并且同时从头开始"从头开始"在每个请求中,都要求必须在一个全新的线程中发送每个请求。根据Hunchentoot文档,情况并非如此,该文档表示支持两种模型:单线程任务主管和每个连接线程的任务主管。

如果您的配置是多线程的,那么请求处理中绑定的特定于线程的变量因此可以是每个连接。在单线程Hunchentoot设置中,它实际上是全局的,与请求服务线程相关联。

基于线程的模拟Grid可能不存在,因为它只会在Web应用程序中引入行为,如果重新配置线程模型,或者浏览器的请求模式发生变化,这会令人惊讶地发生变化。浏览器可以使用相同的连接发出多个请求,或者关闭请求之间的连接。

要使用自定义每个请求扩展CellMeasurerCache个对象,我可能会考虑从hunchentoot:session-value进行子类化(如何在文档中描述)。我的自定义request将拥有acceptor泛型函数的自定义方法,该方法将创建扩展/子类acceptor对象,其中包含我想要放入process-connection的额外内容。< / p>

另一种方法是使用一些全局弱哈希将request个对象绑定为附加信息的键。