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

Coldfusion CF 10和CF 2016之间的缓存查询行为更改,coldfusion,Coldfusion,我正在从Adobe 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 datas

我正在从Adobe 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>

选择10作为值
选择10作为值
#卢比价值#

我是不是误解了什么?我在任何地方都找不到这个文件。欢迎使用RTFMs。

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

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

这将
variables.rs
作为一个结构,其键名为
value
,其值为
2016

这似乎是应该发生的事件的正确进展。这可能是以前版本中的一个bug导致了他们的行为,这在2016年得到了修复(耶!?)

很可能是通过重新创建的步骤来概述这个确切的问题,因此,CF开发团队不知道这是一件事


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

你好像明白了。升级总是很冒险的。我建议确认更改并更改任何受影响的代码。如果在重新执行缓存查询之前添加列(使用
AddQueryColumn()
),则不会缓存新列。。。因此,在查询中更改现有值现在被缓存,但添加新列却不能?我已经向使用Slack的Adobe ColdFusion工程师报告了这个问题。“已经一个多星期了,我还在等待答复。我也是,但我没有屏息以待。”Littlebobbylobloblaw大约20天后,我终于得到了答复。Adobe表示,他们将修复它并“在某个时候登录”。我在周一主动将其添加到bug跟踪器中,周二他们将状态更改为“ToFix”,并表示将在HF5中。我很惊讶这样的bug通过了QA测试。CF2016实际上引入了一个bug
cfquery
应该返回一个结果,而不管如何检索数据。文档说明
如果原始查询日期在时间范围内,则使用缓存的查询数据。
。虽然它在时间范围内,但不会返回缓存的查询数据。这是一个bug.CF不需要重新运行查询(或更新查询缓存)。它应该用缓存的结果更新变量“rs”,而不是假设指定变量的值在时间跨度内永远不变。它是一个变量“name”赋值参数,而不是“cache key”。这就是它的工作原理,对吗?我当然希望这是一个bug,并在我们即将迁移到CF2016-ish时得到修复。在与Slack上的Adobe进行了约20天的沟通后,我终于得到了回应。他们表示,他们将修复它并“在某个时候登录”。我在7月3日星期一主动将其添加到bug跟踪器中,在7月4日星期二,他们将状态更改为“ToFix”,并表示将在HF5中。我很惊讶,像这样的bug一开始就通过了QA测试。以下是错误报告:
<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
    SELECT 10 AS value
</cfquery>
<cfquery datasource="myDs" name="rs" cachedwithin="#createtimespan(0,0,5,0)#">
    SELECT 10 AS value
</cfquery>