2014-04-14 24 views
3

我們目前有一系列變量加載到很少更改的應用程序範圍中。cflock對很少變化的應用程序變量

通過很少更改,我的意思是它們是類似電話號碼的字符串,或者出現在網站上的簡單文本值,並且可能每週更改一次或每月更改一次。

由於我們正在閱讀這些變量,並且因爲它們很少發生變化,是否有任何要求將這些變量封裝在cflock中?

我認爲將這些變量包含在cflock中會帶來很多編碼開銷,因爲模板可能包含多達20個這些靜態變量的實例。

對此的任何意見非常讚賞

+1

你究竟如何改變它們? –

回答

4

就我個人而言,我會說你不需要。這些變量基本上是常量。

但是,您需要自己評估一下。你需要回答這個問題:'用陳舊的數據讀取這些變量的後果是什麼?'

這意味着,如果在您的示例中,請求中使用了錯誤的電話號碼,這是一場災難嗎?如果這是你能忍受的問題,那麼你可以不做任何改變。但是,如果計算中使用了變量,或者如果它們過時會導致不可接受的問題,那麼您將需要鎖定對這些變量的訪問權限。通過這種方式,您可以將精力集中在需要的地方,並儘量減少額外的工作。

另外,如果您確實需要鎖定任何變量,那麼使用的一個好的模式是將它們存儲在存儲在應用程序範圍中的CFC實例中。這樣,您可以處理CFC中的所有鎖定,並且您的調用代碼仍然很簡單。

0

根據ACF,Railo等版本的不同,我建議像這樣的數據可能會更好地存儲在緩存中,而不是存儲在應用程序範圍中。緩存可以通過重新啓動等方式實現更多的持久性,並且可能是更有效的方式。

查看文檔中的cacheput,cacheget,cachedelete等...函數。我相信這是在CF9和Railo 3.2中添加的功能。

再進一步,您可以簡單地緩存使用它們的X時間的整個輸出,以便每次加載該部分時,只需從緩存中加載一次而不是二十次你提到。

如果您打算將它們存儲在應用程序範圍內,那麼您只需要在代碼的更新部分和應用程序級別鎖定cflock。這樣,任何想要讀取它們的東西都必須等待它完成更新,然後才能讀取它們,因爲更新線程將鎖定應用程序範圍。