代码之家  ›  专栏  ›  技术社区  ›  volume one

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

  •  2
  • volume one  · 技术社区  · 6 年前

    我有一个处理用户发帖的CFC。一些处理涉及处理图像和文本,我要求另一个CFC称之为 imagehandler.cfc 还有(还没做) texthandler.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放在应用程序范围内,但该范围已经充满了其他经常使用的CFC的实例。我不能把它放在会话范围内,如果我把它放在请求范围内,那么在每次部分提交一篇文章(首先是封面图片,然后是内嵌图片,然后是文本等)之后,它就会死。

    有更好的方法吗?

    1 回复  |  直到 6 年前
        1
  •  -1
  •   James A Mohler Nika    6 年前

    这一切看起来太多的打字了。移动到 <cfscript> 相反

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

    有关invoke的详细信息 <cfscript> 可在以下位置找到: https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-in-k/invoke.html