Должен ли я использовать cfinvoke или что-то еще для вызова cfc несколько раз?
У меня есть 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>
Все вышеперечисленное происходит в одном сообщении, но многие сотни или тысячи сообщений могут быть представлены в течение дня.
Безопасно ли продолжать использовать cfinvo ke таким образом? Я бы поместил CFC в область APPLICATION, но эта область уже полна экземпляров других CFC, которые часто используются. Я не могу поместить его в область SESSION, и если я добавлю его в область REQUEST, он все равно умрет после каждой частичной отправки сообщения (сначала изображение обложки, затем встроенные изображения, затем текст и т. Д.).
Есть ли лучший способ сделать это?
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