如果我们第一次调用某个xquery
模块,则需要一些时间。后续调用速度更快可能是因为 xquery
模块已解析并存在于模块缓存中。
考虑以下场景:-
HTTP Server1- xdmp:invoke('/a/sample.xqy')
HTTP Server2 - xdmp:invoke('/a/sample.xqy')
两个应用程序服务器都指向相同的模块数据库。
问题:-
为什么后续调用速度更快?
但是,如果我们在 diff 应用程序服务器中调用相同的模块,则调用会很慢。出于缓存目的,此 xquery 模块是否会被视为基于应用程序服务器的单独对象?
MarkLogic 如何决定将哪个条目移出模块缓存?
xdmp:invoke
调用后 MarkLogic 将模块保留在缓存中多长时间?是否有任何 ML 配置可以增加模块缓存大小?
最佳答案
- 缓存 - 但我想您知道这一点?
- 听起来您已经证明了这一点。这是有道理的:不同的应用程序服务器可能具有不同的配置,这些配置可能会影响评估:例如,命名空间和模式,以及可能的输出选项。因此,将应用程序服务器 ID 构建到缓存键中可能更简单。
- 我相信这是一个 LRU 缓存。我不知道它有多大。
- 直到空间不足,或者缓存条目因更新而失效。
- 据我所知,没有。
关于marklogic - xdmp :invoke call in MarkLogic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090415/