Я нашел фрагмент кода, который работает под движком ColdFusion 10, но не под движком ColdFusion 2016 (CF12).
У меня есть CFC, в котором хранятся кэшированные запросы, которые перехватываются вызовами функций. Скажем, у меня есть запрос, который я хочу кэшировать, но я вношу изменения в таблицу базы данных, которую использует этот запрос. Я не вижу данных в возвращенном кэшированном запросе, поэтому мне нужно обновить кеш запроса, достаточно просто. Вот как я настроил свой код:
<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. Что мне нужно сделать по-другому, чтобы обновить кеш этого конкретного запроса?
does not work? - person Dan Bracuk   schedule 27.06.2017