cachedafter の使用方法を示す 2 つの例を次に示します。
これを使用して、1 日 1 回データを更新します。
<cfquery .... cachedafter="#DateFormat( Now(), 'YYYY-MM-DD')#">
日付が明日に変わると、クエリが実行されて更新されます。
または、リクエストごとに 1 回だけ同じクエリを実行するために使用します。
<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 回呼び出すことができ、データベースに対して 1 回だけ実行されます。コードの再利用のレベルによっては、これは非常に便利です。
元の質問に答えると、これらの属性自体はどちらも、2 時間後に 10 分間キャッシュされません。1 つのオプションとして、now()+2 時間と now()+2:10 を追跡するスコープで永続変数を作成し、now() がこれら 2 つの時間の間にある場合にのみ cachedwithin を 10 分に設定することが考えられます。