我发现一段代码可以在 ColdFusion 10 引擎下工作,但不能在 ColdFusion 2016 (CF12) 引擎下工作。
我有一个 CFC,其中包含由函数调用获取的缓存查询。假设我有一个要缓存的查询,但我对该查询使用的 db 表进行了更改。我没有看到返回的缓存查询中的数据,所以我需要刷新查询缓存,很简单。这就是我设置代码的方式:
<cffunction name="getVariables" access="public" returntype="query">
<cfargument name="time_span" required="true" default="#this.cacheSpan#" />
<cfset var qryGetVariables="">
<!--- IF REFRESH, NEW QRYTIMESPAN --->
<cfif arguments.time_span eq 0 AND NOT this.bln_refresh>
<!--- IF time_span 0 but not refresh, reset to original cache span --->
<cfset arguments.time_span = this.cacheSpan />
</cfif>
<cfquery name="qryGetVariables" datasource="#this.dsn#" cachedwithin="#arguments.time_span#">
select *
from get_variables
order by id, value
</cfquery>
<cfreturn qryGetVariables>
</cffunction>
我在同一个 CFC 中调用一个函数,该函数以下列方式刷新此查询:
this.bln_refresh = true;
<cfinvoke method="getVariables" returnvariable="qryReturn">
<cfinvokeargument name="time_span" value="0" />
</cfinvoke>
this.bln_refresh = false;
同样,这以前在 ColdFusion 10 上有效,但现在在 ColdFusion 2016 上无效。我需要做些什么来刷新这个特定查询的缓存?