我应该多次使用cfinvoke或其他方式调用cfc吗?

时间:2018-10-30 12:37:04

标签: coldfusion coldfusion-2016 cfinvoke

我有一个CFC,可以处理用户发布的帖子。一些处理涉及处理图像和文本,我要求另一个称为imagehandler.cfc和(尚待制作)texthandler.cfc的cfc来处理。

在我的post.cfc中,当提供使用AJAX提交的封面图像时,我会进行以下调用:

<cfinvoke component="pathtofolder.imagehandler" method="CoverImage" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

然后,如果用户发布了任何嵌入式图像,则必须在第二个表单提交中使用AJAX来调用它:

<cfinvoke component="pathtofolder.imagehandler" method="InlineImage" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

如果提交了文本,我也必须称之为:

<cfinvoke component="pathtofolder.texthandler" method="PostText" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

以上所有操作都在一个帖子中进行,但是一天中可以提交成百上千的帖子。

以这种方式继续使用cfinvoke是否安全?我将把CFC放在APPLICATION范围内,但是该范围已经充满了经常使用的其他CFC的实例。我不能将其放在SESSION范围内,如果将其放在REQUEST范围内,则在为帖子进行部分提交(无论是第一个封面图像,然后是嵌入式图像,然后是文本等)之后,它还是会死掉。

有更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

这一切看起来太像打字了。移至<cfscript>

 <cfscript>
 // Do this once
 obj = new pathtofolder.imagehandler();

 ...

 // Do this lots of times
 invoke(obj, "CoverImage", {
    Argument1 : somevalue,
    Argument2 : somevalue,
    Argument3 : somevalue,
    }); 
 </cfscript>

有关在<cfscript>中进行调用的更多详细信息,请访问:https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-in-k/invoke.html