cflock很少改变的应用程序变量

时间:2014-04-14 03:06:15

标签: coldfusion cfml

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

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

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

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

对此的任何建议都非常赞赏

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:0)

根据ACF,Railo等的版本...您正在使用我建议像这样的数据可能更好地存储在缓存中而不是应用程序范围中。缓存可以通过重新启动等具有更多持久性......以及可能是更有效的方法。

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

更进一步,您可以简单地缓存使用它们的整个输出X时间,这样每次加载该部分时,它只需要从缓存中加载一个东西而不是你的二十左右提。

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

相关问题