1

无论我做什么,我都在缓存 CFC 中的特定功能时遇到问题。

这是场景:

CFC 通过 ColdSpring 在应用程序范围内实例化。该网站是活的,一切都很好。我想更改此 CFC 中称为“productSearch”的功能之一。无论我做什么,都不会尊重任何改变。

我通常重新启动应用程序以重新实例化 CFC,但这并没有什么不同。我已经尝试创建一个测试页面并在本地显式实例化 CFC,但这没有任何区别。我重新启动了Railo,重新启动了Tomcat,重新启动了服务器,但无济于事。

事实上,我唯一能看到我所做的更改的情况是,如果我真的重命名了函数。这个工作的事实表明 CFC 文件本身没有被缓存,否则新命名的函数将不可用。

更重要的是,这只发生在生产服务器上。如果我在我的开发服务器上进行完全相同的更改,一切都会按预期工作。

我以前从未见过这种情况,我有点不知所措。我真的没有太多代码可以显示它有什么用 - 为了测试,该函数现在包含以下内容:

<cffunction name="productSearch" access="public">
<cfdump var="#CGI#">
<cfabort>
</cffunction>

这失败了,但如果我将它重命名为“productSearch2”它可以正常工作。为了澄清起见,当我说“失败”时,我的意思是运行函数,就好像它根本没有改变一样——之前有各种各样的逻辑,返回一个结构。

Railo 是否在任何地方或其他地方存储解析后的 CFC 版本?我只是看不出这是怎么回事!

4

1 回答 1

0

原来这个问题归结为我在我的代码中使用的一种方法......

我将组件拆分为可管理的.cfm文件,然后将其包含DirectoryListCFInclude基本.cfc文件中

这对我来说效果很好,但是在这种情况下,最近将相关文件的开发版本和实时版本合并给我留下了一个.orig文件-并且由于我的文件是使用 包含DirectoryList的,因此似乎.orig在组件中包含了.cfm版本已加载 - 从而覆盖两个文件中存在的任何函数。这就是重命名函数起作用的原因!

于 2013-11-06T03:15:53.527 回答