2

我习惯了 Adob​​e ColdFusion,并且一直在使用cachedafter“简单”日期缓存查询:

<cfparam name="application.icons_last_changed" default="#now()#">
<cfquery name="get_icons" cachedafter="02/02/1978" datasource="#application.datasources.main#">
SELECT icon_id, icon_name
FROM REF_Icon
WHERE #application.icons_last_changed#=#application.icons_last_changed#
ORDER BY sort_order
</cfquery>

我将我的项目从 ColdFusion/MSSQL 转移到 Railo/PostgreSQL。今天,Railo 诊断程序中的某些内容引起了我的注意。

  • 我习惯在 /path/qry_get_ref_icon.cfm 中看到“get_ref_icon (Datasource=Workstream, Time=cached , Records=39)”
  • 但在 Railo 中,我在 /pathqry_get_ref_icon.cfm 中看到“get_ref_icon (Datasource=Workstream, Time=0.974 ms , Records=39)”。

cachedafter考虑到Railo 可能不支持简单的数据值(“02/02/1978”) ,我尝试使用 设置日期createodbcdatetime('1978-02-02 16:37:00'),但这似乎没有什么不同。

当然,0.974 毫秒是如此之短,以至于查询可能会被缓存,而且 Railo 不像 ColdFusion 那样明确。

我的查询是被缓存了,还是我用错了方法?

4

1 回答 1

3

不,查询没有被缓存。

我遵循了 Busches 的建议并查看了以下结果<cfdump var="#get_icons#" />

Query
Template:/super/double/secret/path/qry_get_ref_icon.cfm 
Execution Time (ms):0.624 
Recordcount:39 
Cached:No                                     <--UH OH, SPAGHETTI-O's
Lazy:No 
SQL: 
SELECT icon_id, icon_name 
FROM REF_Icon 
WHERE active_ind=1 /*{ts '1978-02-02 16:37:00'}*/ 
AND {ts '2013-02-20 22:25:14'}={ts '2013-02-20 22:25:14'} 
ORDER BY sort_order 

因为我是一个不信任的类型,所以我也按照 Adam Cameron 的建议更改了一些数据,然后重新运行了查询。查询结果已更新,因此没有缓存。


我已经向优秀的 Railo 人员报告了这个问题:https ://issues.jboss.org/browse/RAILO-2318

于 2013-02-21T03:43:20.193 回答