在里面cffunction
我有一个查询,我想通过将 设置cachedwitin
为一个大的值来长期缓存。但是,我还想在某些情况下清除该缓存。
我在很多地方都这样做了,但是在其中一个地方,缓存永远不会更新,如果我要求它给我缓存的值,我总是会得到原始值。
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>
为什么这在其他地方有效,而在这里却不行?