gpt4 book ai didi

coldfusion - CF 10 和 CF 2016 之间的缓存查询行为更改

转载 作者:行者123 更新时间:2023-12-04 01:42:40 41 4
gpt4 key购买 nike

我正在从 Adob​​e CF10 升级到 CF2016,我注意到在 CF2016 中,对缓存查询对象的修改似乎会持久保存回缓存。这在 CF10 中似乎不是这种情况。

例如:

<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
SELECT 10 AS value
</cfquery>

<cfset rs.value = 2016>

<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
SELECT 10 AS value
</cfquery>

<!--- CF10 outputs 10 --->
<!--- CF2016 outputs 2016 --->
<cfoutput>#rs.value#</cfoutput>

我是不是误会了什么?我在任何地方都找不到这个记录。欢迎 RTFM。

最佳答案

让我们定义一个查询对象,将其命名为 variables.rs 并将其放入缓存中。

<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
SELECT 10 AS value
</cfquery>

此查询对象包含一条记录和一列(名为 value)。如果我们输出这条记录的列的值,引用为 variables.rs.value,我们会看到 10 的值。

现在,让我们定义一个名为 variables.rsstruct,其中有一个名为 value 的键和一个值为 2016。如果我们输出这个值,引用为 variables.rs.value,我们会看到 2016 的值。

最后,让我们再次运行该查询。

<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
SELECT 10 AS value
</cfquery>

但是查询是在cachedwithin 的时间内运行的,并且记录集从未改变,所以不需要更新查询缓存。因此,变量 variables.rs 不会被更新。

这使得 variables.rs 成为一个结构,其键名为 value,其值为 2016

这似乎是应该发生的事件的正确进展。这可能是以前版本中的一个错误导致他们像现在这样行事,该错误已在 2016 年修复(耶!?)。

很可能 no one has created a bug report因此,CF 开发团队用重新创建的步骤概述了这个确切的问题,并不知道这是一个问题。

当然,与屏住呼吸等待问题被分类、接受、修复和发布相比,重构代码可能更容易。但你至少可以试一试。我的公司在 2016 年和以前的版本之间提交了一些功能上的重大变化,并且大部分(如果不是全部)都得到了修复。

关于coldfusion - CF 10 和 CF 2016 之间的缓存查询行为更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295140/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com