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 服务器缓冲区,请将 cfroot\config\wsconfig\1\isapi_redirect.properties 文件中的is_buffer_enable[sic]更改为。false如果您希望 cfflush 在 IIS 连接器上工作,请禁用 Web 服务器缓冲区。如果您的应用程序不使用 cfflush,请将其设置为 true 以提高性能。

请注意,我在上面引用的 Adob​​e 文档中有一个错字。它应该声明iis_buffer_enable,而不是is_buffer_enable(缺少“i”)。感谢 KrunchMuffin 指出这一点。

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

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

于 2014-11-26T14:03:26.093 回答