Caching Coldfusion cachedAfter和cachedWithin建议

Caching Coldfusion cachedAfter和cachedWithin建议,caching,coldfusion,Caching,Coldfusion,好吧,事情是这样的 我的问题很简单。。。如果“cachedWithin”在特定时间内缓存查询,“cachedFiter”在特定时间后缓存查询,那么如何在“2小时后”缓存查询并将其缓存10分钟 我想在2小时后缓存查询,并将其缓存10分钟。。我一直遵循ColdFusion 9的快速路线,但它没有任何符合我要求的示例 请帮我做这个。任何帮助都将不胜感激 谢谢 这是一个有趣的标签 因此,cachedafter所做的是说查询在特定时间后将是静态的 因此,以下代码将在今天下午3点服务器时间之后开始缓存查询

好吧,事情是这样的

我的问题很简单。。。如果“cachedWithin”在特定时间内缓存查询,“cachedFiter”在特定时间后缓存查询,那么如何在“2小时后”缓存查询并将其缓存10分钟

我想在2小时后缓存查询,并将其缓存10分钟。。我一直遵循ColdFusion 9的快速路线,但它没有任何符合我要求的示例

请帮我做这个。任何帮助都将不胜感激


谢谢

这是一个有趣的标签

因此,cachedafter所做的是说查询在特定时间后将是静态的

因此,以下代码将在今天下午3点服务器时间之后开始缓存查询

<cfset cachedate = CreateOdbcDateTime(dateformat(now(),'yyyy-mm-dd') & ' 15:00:00') />
<cfquery .... cachedafter="#cachedate#"....>
  QUERY
</cfquery>

查询
更常见的是,cachedwithin告诉Cold Fusion仅每6小时运行一次此查询。我通常将其用于可能不会经常更改的数据或需要很长时间加载的数据

<cfquery ... cachedwithin="#CreateTimeSpan(0, 6, 0, 0)#" ...>
  QUERY
</cfquery>

查询

这里还有两个示例演示如何使用cachedafter

使用它每天刷新一次数据:

<cfquery .... cachedafter="#DateFormat( Now(), 'YYYY-MM-DD')#">

当日期明天结束时,查询将运行并刷新

或者,每个请求只运行一次相同的查询:

<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>

....
您可以在同一个请求中调用getstuff()100次,它只会对数据库执行一次。根据您的代码重用级别,这可能非常方便

为了回答最初的问题,这两个属性本身都不会在2小时后缓存10分钟。一个选项可能是在某些范围内创建持久变量来跟踪now()+2小时和now()+2:10,然后仅当now()介于这两个时间之间时,才将cachedwithin设置为10分钟