Рендеринг XML с большим содержанием - PullRequest
0 голосов
/ 18 мая 2018

Приложение CF возвращает XML-ответ для настольного приложения.Ответ XML в порядке от 0,5 до 3 секунд.XML содержит вложения, которые заархивированы, а затем закодированы в base64.Как только у нас вложение немного больше, скажем, 5 МБ, на ответ уходит больше минуты.Не настоящий код, но это то, что я делаю (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>   

Хотя файлы заархивированы, но иногда сжатие невелико, а файл размером 8 МБ после сжатия составляет около 7 МБ.Общий вес страницы становится около 9 МБ +

Может помочь увеличение максимального выходного буфера с 1024 КБ до 4096 КБ или даже 2048 КБ?Какие-либо последствия для этого?Любые другие настройки CF или IIS, которые можно настроить?

1 Ответ

0 голосов
/ 18 мая 2018

Почему вы используете 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-документ строковый только один раз и без разбора. Это должно заметно ускорить обработку.

...