Coldfusionacached after and cacheed with in suggestion
2 answers
Então, o seguinte código iria começar a cache a consulta após a hora do servidor 3PM hoje.
<cfset cachedate = CreateOdbcDateTime(dateformat(now(),'yyyy-mm-dd') & ' 15:00:00') />
<cfquery .... cachedafter="#cachedate#"....>
QUERY
</cfquery>
Mais comumente, cachedwithin está dizendo a fusão a frio para apenas executar esta consulta a cada 6 horas. Normalmente uso isto para dados que podem não estar mudando muito frequentemente ou dados que levam um longo tempo para carregar.
<cfquery ... cachedwithin="#CreateTimeSpan(0, 6, 0, 0)#" ...>
QUERY
</cfquery>
Aqui estão mais dois exemplos demonstrando como cachedafter pode ser usado.
Use-o para actualizar os dados uma vez por dia:
<cfquery .... cachedafter="#DateFormat( Now(), 'YYYY-MM-DD')#">
Quando a data chegar amanhã, a consulta vai correr e actualizar.
Ou, use-o para executar a mesma consulta apenas uma vez por pedido:
<cfset Request.Cachetime = DateFormat( Now() ,"MM/DD/YYYY" ) & " " & TimeFormat( Now(), "HH:MM:SS.L" )>
<cffunction name="getstuff">
<cfquery name="LOCAL.result" cachedafter="#Request.Cachetime#">
....
</cfquery>
<cfreturn LOCAL.result />
</cffunction>
Você pode ligar para getstuff() 100 vezes no mesmo pedido e ele só vai executar uma vez contra a base de dados. Dependendo do seu nível de reutilização de código, isso pode ser muito útil.
Para responder a pergunta original então, nenhum destes atributos por si só irá cache por 10 minutos após 2 horas. Uma opção pode ser criar variáveis persistentes em algum escopo para rastrear agora ()+2 horas e agora()+2:10, em seguida, definir cachedwith em 10 minutos apenas quando agora() está entre essas duas vezes.