有沒有辦法在應用程序範圍內聲明一個變量。這個變量應該留在內存中並且服務於所有的請求,而不需要爲每個請求創建它。像會話一樣,但它不受特定用戶的束縛。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,謝謝你的建議。其實,這正是我所尋找的。 –