使用更大的内容呈现XML

时间:2018-05-17 23:41:25

标签: coldfusion coldfusion-2016

CF应用程序向桌面应用程序返回XML响应。 XML响应可以在0.5到3秒内完成。 XML包含压缩的附件,然后是base64编码的附件。一旦我们的附件略大一些,比如5MB就会开始花费超过一分钟的时间来响应。不是真正的代码,但这就是我正在做的事情(CF2016和IIS):

<cfxml variable="myXML">    
<sample Status="NewJob" Type="response">
<NewJob>
   <jobNumber>3894743</jobNumber>
   <Rate>0</Rate>
   <doc><![CDATA[UEsDBBQACAAIAMl BASE_64_CONTENT]]></doc>
 </NewJob>
</sample>
</cfxml>
<cfset tempVar = xmlParse(trim(myXML))>
<cfcontent type="text/xml">
<cfoutput>#TempVar#</cfoutput>   

虽然文件是压缩的,但有时压缩不大,压缩后8MB文件约为7MB。页面总重量约为9MB +

可以将最大输出缓冲区从1024kb增加到4096KB甚至2048kb吗?这样做有什么后果吗? CF或IIS上的任何其他设置都可以调整?

1 个答案:

答案 0 :(得分:2)

您为什么使用xmlParse()<cfxml>标记已生成XML文档。现在,您的代码将XML文档(xmlParse的参数)字符串化,然后将其解析为XML文档(返回xmlParse),然后再次对其进行字符串化(输出TempVar)。简化您的代码:

<cfxml variable="myXML">
    <sample Status="NewJob" Type="response">
        <NewJob>
            <jobNumber>3894743</jobNumber>
            <Rate>0</Rate>
            <doc><![CDATA[UEsDBBQACAAIAMl BASE_64_CONTENT]]></doc>
        </NewJob>
    </sample>
</cfxml>

<cfcontent type="text/xml">
<cfoutput>#myXML#</cfoutput>

现在,您的XML文档只进行一次字符串化,无需任何解析。这样可以显着加快处理速度。