使用一个大的<cfoutput>标签有什么性能影响吗?</cfoutput>

时间:2010-07-16 20:29:12

标签: coldfusion

我被迫/付钱参与Legacy ColdFusion项目(我是一名普通的C#程序员),而CF的一个特点就是他们有自己的标签,应该与HTML混合(坏的坏)决定,国际海事组织,因为它只是混淆了我的地狱,即使是“以cf规则开始”。

除此之外,他们还有#字符来表示CF“领域”的开头非常相似&lt;%在ASP.Net或$ in Spark或等价物中。但是只有在标记内部才能解析。

我的问题是:在文件的开头打开一个标签并关闭它是否有问题,仅在我打算使用#字符时使用?

这里要说明一些代码:

<cfoutput>
    Some text #SomeVar# Some text.<br />
    Some Images some other things #AnotherVar#
</cfoutput>

反对:

Some text <cfoutput>#SomeVar#</cfoutput> Some text.<br/>
Some Images some other things <cfoutput>#AnotherVar#</cfoutput>

当然,这对于小内容来说似乎微不足道,但我说的是一整页。

4 个答案:

答案 0 :(得分:8)

根据页面内容,两者都可以。将所有页面放在CFOUTPUT标记内可能会对性能产生影响(次要),因为CFML引擎需要解析并扫描标记内容以获取可执行代码。在CFOUTPUT标记之外,CFML引擎可以将页面忽略为静态内容。

如果您有使用井号的CSS和HTML代码(例如命名锚点或Hex颜色代码),则需要在CFOUTPUT中转义所有井号(通过添加第二个,如“##”)。因此,我通常只将CFOUTPUT放在代码中我特别希望CF引擎运行。

也就是说,CFML引擎为不断打开和关闭CFOUTPUT而付出了一点性能损失。如果你循环遍历内容,将CFOUTPUT放在整个循环中,而不是在循环的每次迭代中打开和关闭它。

另外,如果您无法了解CFML的代码和不知道的代码,您可能希望获得更好的CFML IDE / IDE编辑器。它对标签进行颜色编码,让您立即看到CFML和HTML标签之间的区别。它是开源的。

答案 1 :(得分:3)

您可能会发现一个问题是cfoutput通常用于显示查询,并且它们不能嵌套在其他cfoutput标记内。因此,这将导致“无效标记嵌套配置”错误

<cfoutput>
  <cfoutput query="qFriends">
    <li>#qFriends.fname# #qFriends.lname#</li>
  </cfoutput>
</cfoutput>

答案 2 :(得分:0)

这不应该是一个大问题,但要小心使用十六进制颜色,你需要逃避那些额外的#。如果是我,我会尝试将那些巨大的内容分解成更小的部分。让HTML,JS,Flash和CSS完成他们的工作,并将CF用于服务器端。

答案 3 :(得分:-1)

如果您想将cfoutput放在页面的开头和结尾,则必须使用双号##作为颜色值。