ColdFusion 11 cfflush标签无法正常工作?

时间:2014-11-24 22:20:59

标签: coldfusion coldfusion-11

任何人在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>

1 个答案:

答案 0 :(得分:11)

从评论中推广

<cfflush>标记与Web服务器一起正常工作所需的配置设置。在Configuring web servers in Windows文档页面的为Windows中的ColdFusion配置IIS 部分,其中包括:

  

要禁用网络服务器缓冲区,请将cfroot \ config \ wsconfig \ 1 \ isapi_redirect.properties文件中的is_buffer_enable [原文如此]更改为false。如果希望cfflush在IIS连接器上工作,请禁用webserver缓冲区。如果您的应用程序不使用cfflush,请将其设置为true以提高性能。

请注意,我在上面引用的Adobe文档中存在拼写错误。它应该说明iis_buffer_enable,而不是is_buffer_enable(错过&#39; i&#39;)。感谢KrunchMuffin指出这一点。

您需要重新启动IIS才能使此更改生效。

我不确定禁用此设置的性能影响。您需要为特定环境进行一些负载测试才能看到。