2014-04-14 18 views
3

我们目前有一系列变量加载到很少更改的应用程序范围中。cflock对很少变化的应用程序变量

通过很少更改,我的意思是它们是类似电话号码的字符串,或者出现在网站上的简单文本值,并且可能每周更改一次或每月更改一次。

由于我们正在阅读这些变量,并且因为它们很少发生变化,是否有任何要求将这些变量封装在cflock中?

我认为将这些变量包含在cflock中会带来很多编码开销,因为模板可能包含多达20个这些静态变量的实例。

对此的任何意见非常赞赏

+1

你究竟如何改变它们? –

回答

4

就我个人而言,我会说你不需要。这些变量基本上是常量。

但是,您需要自己评估一下。你需要回答这个问题:'用陈旧的数据读取这些变量的后果是什么?'

这意味着,如果在您的示例中,请求中使用了错误的电话号码,这是一场灾难吗?如果这是你能忍受的问题,那么你可以不做任何改变。但是,如果计算中使用了变量,或者如果它们过时会导致不可接受的问题,那么您将需要锁定对这些变量的访问权限。通过这种方式,您可以将精力集中在需要的地方,并尽量减少额外的工作。

另外,如果您确实需要锁定任何变量,那么使用的一个好的模式是将它们存储在存储在应用程序范围中的CFC实例中。这样,您可以处理CFC中的所有锁定,并且您的调用代码仍然很简单。

0

根据ACF,Railo等版本的不同,我建议像这样的数据可能会更好地存储在缓存中,而不是存储在应用程序范围中。缓存可以通过重新启动等方式实现更多的持久性,并且可能是更有效的方式。

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

再进一步,您可以简单地缓存使用它们的X时间的整个输出,以便每次加载该部分时,只需从缓存中加载一次而不是二十次你提到。

如果您打算将它们存储在应用程序范围内,那么您只需要在代码的更新部分和应用程序级别锁定cflock。这样,任何想要读取它们的东西都必须等待它完成更新,然后才能读取它们,因为更新线程将锁定应用程序范围。