6

ColdFusion 11 の cfflush タグに問題がある人はいますか? ループの処理中にライブ レコード カウントを更新するルーチンがあります。ColdFusion 10 では、これで問題なく動作します。ColdFusion 11 では、ループの最後まで待機して画面を更新します。私たちが期待したものではありません。

要求に応じてコードを追加するように編集しました...

<script language="javascript">
    addOutputLine('<br /><span id="insertCount">Records Inserted: 0</span>')
</script>
<cfset insertCount = 0>
<cfset updateCountAfter = 1>
<cfif qry.recordcount gt 5000>
    <cfset updateCountAfter = 10>
</cfif>

<cfoutput query="qry" startrow="#DATASTART#">
    <!---do some stuff here that is not important to this issue--->

    <cfset insertCount = insertCount + 1>
    <cfif updateCountAfter gt 1>
        <cfif insertCount mod updateCountAfter eq 0>
            <script language="javascript">document.getElementById('insertCount').innerHTML = 'Records Inserted: #insertCount#';</script>    
        </cfif> 
    <cfelse>
         <script language="javascript">document.getElementById('insertCount').innerHTML = 'Records Inserted: #insertCount#';</script>
    </cfif>

    <cfflush>

</cfoutput>
4

1 に答える 1

11

コメントから昇格

<cfflush>タグが Web サーバーで適切に動作するために必要な構成設定があります。「Windows でのWeb サーバーの構成」ドキュメント ページの「 Windowsでの ColdFusion 用 IIS の構成」セクションの下には、次のように記載されています。

Web サーバー バッファを無効にするには、is_buffer_enable[sic] をfalsecfroot\config\wsconfig\1\isapi_redirect.properties ファイルに変更します。cfflush を IIS コネクタで動作させたい場合は、Web サーバーのバッファを無効にします。アプリケーションで cfflush を使用しない場合は、パフォーマンスを向上させるために true に設定します。

上記で参照した Adob​​e ドキュメントにはタイプミスがあることに注意してください。(「i」iis_buffer_enableがない) ではなく、と記載する必要があります。is_buffer_enableそれを指摘してくれたKrunchMuffinに感謝します。

この変更を有効にするには、IIS を再起動する必要があります。

この設定を無効にすることによるパフォーマンスへの影響が何であるかはわかりません。特定の環境を表示するには、負荷テストを行う必要があります。

于 2014-11-26T14:03:26.093 に答える