xQuery应用程序范围变量?

时间:2016-05-12 13:56:13

标签: xquery marklogic

有没有办法在应用程序范围内声明变量。此变量应保留在内存中并提供所有请求,而无需为每个请求创建它。类似于会话,但它与特定用户无关。

我正在寻找的东西类似于php APC缓存。

2 个答案:

答案 0 :(得分:2)

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

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

服务器字段可用于主机上appserver的所有请求。

答案 1 :(得分:0)

由于这是标记的" marklogic"我将提供MarkLogic非标准答案。 基于标准的答案是' no'或者问题超出范围'因为XQuery没有定义一个应用范围' (超出顶级模块声明的范围 - 在某些情况下可称为“应用范围'”)

在MarkLogic中,有一项名为“Sessions'”的受支持功能。 对于与通常称为" Session"。

相对应的Web应用程序

通过第一次调用xdmp:login()创建会话(通过使用支持的身份验证在HTTP Server中运行,显式或隐式)。 会议'州'是在第一次写入会话字段时创建的(显式地通过xdmp:set-session-field,或者在某些情况下隐式地(*))。

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

会话字段是名称(xs:string)到item()*的映射 只要会话持续,它们就会持续(请参阅上面链接中有关到期的说明)。

请注意,跨越多个HTTP请求的会话要求客户端通过正确的HTTP Cookie处理参与(ML服务器无法通过HTTP Cookie机制在套接字关闭后无法跟踪请求。)

如果您使用的是现代浏览器,则无需禁用Cookie。 如果您使用的是现代Web客户端库,则可能会为您完成此操作。 如果您使用一个MarkLogics发布的SDK(java,node,xcc),它将为您完成。 如果您正在通过负载均衡器,3级路由器,网关,代理......那些可能需要配置为" HTTP会话关联性" (基于cookie)保证cookie不变地传递,并且SessionID cookie被映射到HTTP亲和力。(**)

注意:IT设备的功能和术语差异很大。 什么叫做#34; Session Affinity"可能与cookies无关,或 正确的饼干。这些通常可以配置为正常工作但可能 需要自定义代码或配置。

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