|
|
1
1
我理解您希望避免传递您想要缓存到的实际范围结构,但是您的选择是有限的。首先要想到的是,只需传递希望将缓存存储在其中的作用域的名称(字符串)并进行计算。从本质上讲,评价是低效的,应该避免。也就是说,我很好奇它是如何完成的。我没有你的代码,所以我在这里做了一个非常简单的“存储”抽象cfc(跳过缓存,因为它与我想测试的内容无关): CCF.CFC:
以及测试它的视图:
主题外:我喜欢编写setter函数来返回“this”[如上所示],这样我就可以像jquery那样链接方法调用。部分视图可以很容易地编写为:
有趣的是,这是可能的,但由于评估的间接成本,我可能不会在生产中使用它。我想说,这是传递您想要缓存到的作用域的充分理由。 如果你还在为此烦恼(也许是对的?),您可以创建另一个从所需范围中提取读写内容的CFC,并将其作为存储位置(非常适合 ColdSpring ,这样,如果您决定将缓存移动到另一个作用域,就不必使用将“session”传递给init的缓存cfc来编辑300个页面,而是可以编辑1个cfc或coldspring配置。 但是,我不完全确定为什么当您有请求范围时,您希望使用单个请求缓存。如果您正在寻找的是一种为当前请求缓存某些内容的方法,并在不久之后将其终止,那么请求范围可能就是您想要的范围。当缓存跨越多个请求时,它通常更有价值。 |
|
2
2
好吧-因为我最初误解了你的问题,所以我删除了以前的答案,以免引起进一步的混乱。 要回答有关锁定的问题: 命名锁应该很好,因为它们不必总是使用相同的名称。您可以根据访问的缓存动态命名它们。当需要访问私有结构的元素时,可以执行类似于使用命名锁这样的操作,使用键作为其名称。 这样,一个锁产生效果的唯一时间就是某个对象试图按名称访问同一个缓存。 |
|
|
JLosc · Powershell脚本因文件锁定而失败 1 年前 |
|
|
Sriram Umapthy · PostgreSql行级锁 1 年前 |
|
|
a a · 为什么在这个可重入锁示例中需要引用计数? 3 年前 |
|
|
JohnLBevan · 为什么原子语句上需要锁提示? 8 年前 |