首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ColdFusion中缓存存储过程

在ColdFusion中缓存存储过程
EN

Stack Overflow用户
提问于 2013-06-13 13:34:42
回答 1查看 1.2K关注 0票数 0

我在尝试缓存一个存储过程。我已经下载了ColdFusion 10,并且它正在一个Railo 4服务器上运行。我在Railo (默认缓存)中设置了数据库连接,根据Adobe,我只需要使用cachedWithin属性,它应该被缓存。然而,它不是,我知道这一点是肯定的,因为我的网页需要超过10秒。装货!

我尝试使用存储过程周围的cfcache标记动态地缓存它,但是这使我不想缓存的整个页面保持高速缓存。CachePutCacheGet也可以工作,但是我的代码很复杂,可以有效地适应它们。

超级迷茫。

以下是相关代码:

代码语言:javascript
复制
<cfstoredproc datasource="#XXX#" procedure="XXX" cachedWithin="#CreateTimeSpan(0,3,0,0)#">
                <cfprocparam type="In" value="#IDate#" cfsqltype="CF_SQL_TIMESTAMP">
                <cfprocparam type="In" value="12" cfsqltype="CF_SQL_INTEGER">
                <cfprocparam type="In" value="1" cfsqltype="CF_SQL_BIT">
                <cfprocresult name="DeptQuery">
</cfstoredproc>

更新:原来存储过程不是占用所有时间的!我终于得到了它的缓存!但是我对它是如何做到的感到困惑,因为我在多个页面上缓存1000 s相同存储过程的变体(每个页面都有多个存储过程),而我所指定的只是一个cachedWithin param。当它把它们拉到视图上时,它怎么知道哪个程序是哪一个程序?

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 14:14:54

你正在传递日期/时间(看上去像什么)。查询缓存基于查询的参数(更具体地说,是将使用的SQL )。我猜你每次都会通过不同的日期/时间。每个不同的日期/时间值都会有自己的缓存结果,除非您只是每次传入相同的日期值?

例如,它们将被视为缓存的两个不同对象:

代码语言:javascript
复制
<cfstoredproc datasource="#XXX#" procedure="XXX" cachedWithin="#CreateTimeSpan(0,3,0,0)#">
     <cfprocparam type="In" value="2013-06-13 09:00:00" cfsqltype="CF_SQL_TIMESTAMP">
</cfstoredproc>

<cfstoredproc datasource="#XXX#" procedure="XXX" cachedWithin="#CreateTimeSpan(0,3,0,0)#">
     <cfprocparam type="In" value="2013-06-13 10:00:00" cfsqltype="CF_SQL_TIMESTAMP">
</cfstoredproc>    

来自文档

要使用缓存的数据,当前查询必须使用相同的SQL语句、数据源、查询名、用户名和密码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17088441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档