xQuery 应用程序范围变量?
xQuery application scope variable?
有没有办法在应用程序范围内声明一个变量。此变量应保留在内存中并为所有请求提供服务,而无需为每个请求创建它。类似于会话,但它不绑定到特定用户。
我要找的是类似于 php APC 缓存的东西。
因为这是标记 "marklogic" 我将提供一个 MarkLogic 非标准答案。
基于标准的答案是 'no' 或 'question out of scope' 因为 XQuery 没有定义 'application scope' (超出顶级模块语句的执行——在某些上下文中可以称为 'application scope' )
在 MarkLogic 中有一个支持的功能叫做 'Sessions';
对于对应通常称为"Session".
的Web应用程序
会话由第一次调用 xdmp:login() 创建(通过 运行 在 HTTP 服务器中使用受支持的身份验证显式或隐式调用)。
会话 'state' 是在第一次写入会话字段时创建的(明确地通过 xdmp:set-会话字段,或者在某些情况下隐式地(*))。
https://docs.marklogic.com/xdmp:set-session-field
会话字段是名称 (xs:string) 到项目 () 的映射*
只要会话持续,它们就会持续(请参阅上面 link 中关于过期的注释)。
请注意,跨越多个 HTTP 请求的会话要求客户端通过适当的 HTTP Cookie 处理参与(ML 服务器无法也不会尝试在套接字关闭后跟踪请求,除非通过 HTTP Cookie 机制。)
如果您使用的是现代浏览器,则无需禁用 cookie。
如果您使用的是现代 Web 客户端库,这可能会为您完成。
如果您使用的是一个 MarkLogics 发布的 SDK(java,node,xcc),它将为您完成。
如果您要通过负载均衡器、Level 3 路由器、网关、代理……可能需要为 "HTTP Session Affinity" 配置这些(基于 cookie)以保证 cookie 以不变的方式传递并且 SessionID cookie映射到 HTTP affinity。(**)
注意:IT 设备的功能和术语差异很大。
通常所说的 "Session Affinity" 可能与 cookie 无关,或者
正确的饼干。这些通常可以配置为正常工作,但可能
需要自定义代码或配置。
(*) 在某些情况下,可以通过创建多语句事务来隐式创建会话状态。
(**)
https://docs.marklogic.com/guide/node-dev/extensions
会话字段提供了一种可能性;另一种可能性是服务器字段:
http://docs.marklogic.com/xdmp:set-server-field
服务器字段可用于主机上应用服务器的所有请求。
有没有办法在应用程序范围内声明一个变量。此变量应保留在内存中并为所有请求提供服务,而无需为每个请求创建它。类似于会话,但它不绑定到特定用户。
我要找的是类似于 php APC 缓存的东西。
因为这是标记 "marklogic" 我将提供一个 MarkLogic 非标准答案。 基于标准的答案是 'no' 或 'question out of scope' 因为 XQuery 没有定义 'application scope' (超出顶级模块语句的执行——在某些上下文中可以称为 'application scope' )
在 MarkLogic 中有一个支持的功能叫做 'Sessions'; 对于对应通常称为"Session".
的Web应用程序会话由第一次调用 xdmp:login() 创建(通过 运行 在 HTTP 服务器中使用受支持的身份验证显式或隐式调用)。 会话 'state' 是在第一次写入会话字段时创建的(明确地通过 xdmp:set-会话字段,或者在某些情况下隐式地(*))。
https://docs.marklogic.com/xdmp:set-session-field
会话字段是名称 (xs:string) 到项目 () 的映射* 只要会话持续,它们就会持续(请参阅上面 link 中关于过期的注释)。
请注意,跨越多个 HTTP 请求的会话要求客户端通过适当的 HTTP Cookie 处理参与(ML 服务器无法也不会尝试在套接字关闭后跟踪请求,除非通过 HTTP Cookie 机制。)
如果您使用的是现代浏览器,则无需禁用 cookie。 如果您使用的是现代 Web 客户端库,这可能会为您完成。 如果您使用的是一个 MarkLogics 发布的 SDK(java,node,xcc),它将为您完成。 如果您要通过负载均衡器、Level 3 路由器、网关、代理……可能需要为 "HTTP Session Affinity" 配置这些(基于 cookie)以保证 cookie 以不变的方式传递并且 SessionID cookie映射到 HTTP affinity。(**)
注意:IT 设备的功能和术语差异很大。 通常所说的 "Session Affinity" 可能与 cookie 无关,或者 正确的饼干。这些通常可以配置为正常工作,但可能 需要自定义代码或配置。
(*) 在某些情况下,可以通过创建多语句事务来隐式创建会话状态。 (**) https://docs.marklogic.com/guide/node-dev/extensions
会话字段提供了一种可能性;另一种可能性是服务器字段:
http://docs.marklogic.com/xdmp:set-server-field
服务器字段可用于主机上应用服务器的所有请求。