2016-05-12 52 views
0

有没有办法在应用程序范围内声明一个变量。这个变量应该留在内存中并且服务于所有的请求,而不需要为每个请求创建它。像会话一样,但它不受特定用户的束缚。xQuery应用程序范围变量?

我在找什么是类似于php APC缓存。

回答

2

会话字段提供了一种可能性;另一种可能是服务器领域:

http://docs.marklogic.com/xdmp:set-server-field

服务器场是提供给主机上的应用程序服务器的所有请求。

+0

嗨@ehennum,谢谢你的建议。其实,这正是我所寻找的。 –

0

由于这是标记“marklogic”我将提供一个MarkLogic无标准答案。 基于标准的答案是'不'或'超出范围的问题',因为XQuery没有定义'应用程序范围'(超出顶层模块语句的执行 - 在某些情况下可以称为“应用程序范围”)

在MarkLogic有一个名为“会话”支持的功能; 针对通常称为“Session”的Web应用程序。 ()(显式或隐式使用支持的认证HTTP服务器运行)登录:

会议由第一次调用xdmp创建。 会话'状态'是在首次写入会话字段时创建的(显式地通过xdmp:set-session-field,或者在某些情况下隐式地(*))。

https://docs.marklogic.com/xdmp:set-session-field

会议字段是地图名(XS:字符串)项()* 他们只要最后的会话持续(见上面的链接时到期票据)。

需要注意的是跨越多个HTTP请求会话要求客户端通过适当的HTTP cookie处理参与(ML服务器有没有能力,也没有试图关闭套接字除了通过HTTP Cookie的机制后,跟踪的请求。)

如果您使用的是现代浏览器,则不需要禁用Cookie。 如果您使用的是现代Web客户端库,则可能会为您完成。 如果您正在使用一个MarkLogics发布的SDK(java,node,xcc),它将为您完成。 如果您正在浏览负载平衡器,那么可能需要针对“HTTP Session Affinity”(基于Cookie)配置3级路由器,网关,代理...,以确保Cookie传递不变并且SessionID cookie被映射为HTTP关联。(**)

注意:IT设备的功能和术语差别很大。 常被称为“会话亲和性”的内容可能与cookies不相关,也可能与正确的cookies有关。这些通常可以配置为正常工作,但可能需要自定义代码或配置。

(*)通过创建多语句事务,可以在某些情况下隐式创建会话状态。 (**) https://docs.marklogic.com/guide/node-dev/extensions

+0

嗨@DALDEI,谢谢你提供的信息丰富的答案。实际上,使用Cookie和网络管理映射操作的部分很有用。但是,我正在寻找像ehennum建议那样简单的东西。 –