[英]Should I use cfobject or cfinvoke for a repetitive task?
我需要遍歷一組圖像路徑來抓取,調整大小並將圖像從外部目標存儲到S3。
我習慣叫cfcs這樣做:
<cfinvoke component="form_img_handler" method="upload" returnvariable="imgSuccess">
<cfinvokeargument name="command" value="upload_search"/>
<cfinvokeargument name="imgPath" value="#results.bildpfad #"/>
<cfinvokeargument name="imgFile" value="#results.bilddateiname#"/>
<cfinvokeargument name="sellerILN" value="#results.iln#"/>
<cfinvokeargument name="cookie" value="#variables.screenWidth#"/>
</cfinvoke>
題:
如果我必須在循環中執行25x,那么使用cfobject
而不是cfinvoke
會更好嗎? 根據我的理解cfinvoke
實例化,運行它的工作並消失。 雖然cfobjects
留在那里。 如果是這樣,在上述情況下使用cfobject
會更好嗎? 如果是這樣,我upload
如何調用我的upload
函數(傳遞參數)以及如何在完成后刪除對象?
(從未使用過cfobject ......)
感謝幫助!
也不要使用像...這樣的東西
外部循環(可能在全局范圍內,例如應用程序):
<cfset form_img_hander = createObject('component','dotted.path.to.form_img_hander') />
or
<cfset form_img_hander = new dotted.path.to.form_img_hander() />
內循環:
<cfset imgSuccess = form_img_handler.upload
( command = "upload_search"
, imgPath = results.bildpfad
, imgFile = results.bilddateiname
, sellerILN = results.iln
, cookie = variables.screenWidth
)/>
因為它更具可讀性。
除非您有可重復的測試用例,證明您存在性能問題 , 否則您沒有性能問題。
關於刪除對象......
如果您沒有將對象放在持久范圍內,則無需擔心刪除它們 - 它們只與請求綁定,一旦請求結束,它們將根據需要進行垃圾收集。
如果要將對象放在持久范圍內,您可能仍然不需要擔心刪除它們,但如果確定要這樣做,則可以使用StructDelete將其刪除(就像任何其他變量一樣)。 當然,你應該注意不要在需要的時候這樣做。
使用CreateObject
實例化對象並將其分配給變量:
<cfset handler = CreateObject("component", "form_img_handler")>
<cfset handler.upload(URL.command, URL.imgPath ... )>
在實例化對象一次后,可以在循環中調用第二行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.