有没有办法在应用程序范围内声明一个变量。这个变量应该留在内存中并且服务于所有的请求,而不需要为每个请求创建它。像会话一样,但它不受特定用户的束缚。xQuery应用程序范围变量?
我在找什么是类似于php APC缓存。
有没有办法在应用程序范围内声明一个变量。这个变量应该留在内存中并且服务于所有的请求,而不需要为每个请求创建它。像会话一样,但它不受特定用户的束缚。xQuery应用程序范围变量?
我在找什么是类似于php APC缓存。
由于这是标记“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
嗨@DALDEI,谢谢你提供的信息丰富的答案。实际上,使用Cookie和网络管理映射操作的部分很有用。但是,我正在寻找像ehennum建议那样简单的东西。 –
嗨@ehennum,谢谢你的建议。其实,这正是我所寻找的。 –