aの中に、を大きな値にcffunction
設定してキャッシュを長くしたいクエリがあります。cachedwitin
ただし、いくつかの状況では、そのキャッシュもクリアしたいと思います。
私はこれを多くの場所で行ってきましたが、そのうちの1つではキャッシュが更新されることはなく、キャッシュされた値を提供するように依頼すると、常に元の値を取得します。
cfqueryのドキュメントには次のように記載されています。
キャッシュされたデータを使用するには、現在のクエリで同じSQLステートメント、データソース、クエリ名、ユーザー名、およびパスワードを使用する必要があります。
これはクエリの場合です。これは、cfqueryparam
;以外の非SQLを含まない単一のSQLステートメントであるためです。データソースとクエリ名は変更されず、ユーザー名とパスワードは指定されません。
関連するコードは次のとおりです。
<!--- Long cache the query since the values rarely change, but allow the cache to be cleared. --->
<cfif Arguments.ClearCache EQ false>
<cfset local.CachedWithin = CreateTimeSpan(7,0,0,0)>
<cfelse>
<cfset local.CachedWithin = CreateTimeSpan(0,0,0,-1)>
</cfif>
<cfquery name="local.qryName" datasource="#Variables.DSN#" cachedwithin="#local.CachedWithin#">
SELECT
[User].[Name]
FROM
[User]
WHERE
[User].[UserID] = <cfqueryparam value="#Arguments.UserID#" cfsqltype="cf_sql_integer">
</cfquery>
なぜこれは他の場所で機能するのに、ここでは機能しないのですか?