ColdFusion 11花费太多时间来编译CFC

时间:2018-08-16 14:06:03

标签: coldfusion coldfusion-11

我正在使用ColdFusion11。我有一个CFC文件,其中包含20,000行代码。 每当我在CFC文件中进行任何更改时,都会花15到20秒的时间进行编译。较小的文件(例如5,000行代码)不会发生此问题。

还有其他人面临这个问题吗?我需要减小文件大小吗?如果是,请提出解决方案。

2 个答案:

答案 0 :(得分:3)

我可以确认您的观察。将CFML编译为Bytecode可能要花费一些时间。减少开发中每次代码更改时的噪音的唯一选择是降低组件的复杂性并将其拆分为多个子组件。老实说:2万行代码对我来说就像God object。考虑分离功能并注入依赖项。这将减少重新编译所有内容的需要,而仅编译您实际更改的子组件。但是,只有您能说出如何重构代码。祝你好运。

答案 1 :(得分:2)

  

我有一个CFC文件,其中包含20,000行代码。

好可爱。 :)我的前任雇主使用的CFC含5万行代码及更多。如此之多,我们不得不<cfinclude>编写代码到CFC中,以便Java甚至可以编译它们。

  

我不是在谈论页面性能,而是在谈论编译时间。每当我进行任何更改时,打开页面都需要20秒,否则页面性能就可以了。

要清楚一点,您是在谈论在更改CFC或在编辑器中打开文件后,在浏览器中加载URL会花费很多时间吗?

  

我正在使用记事本++和Dreamweaver。

这些都不像您一样处理大文件。很久以前,我使用带有CFEclipse的Eclipse IDE编辑CFML文件。该IDE无法在不调整内存设置的情况下处理大文件。 CF Builder也有同样的问题。

我们使用CFML插件(从他们的计算机上从字面上删除了DreamWeaver)将该公司的所有开发人员转换为Sublime Text。那是唯一可以处理该大小文件的编辑器。您也可以尝试使用VS Code,它也具有CFML插件,但是我以前没有亲自使用过那些大型文件。


更新

由于您正在谈论浏览器中的页面加载速度,因此,一旦对CFC进行了更改,则调用CFC的第一个页面加载会将其编译为Java类文件,该文件将由服务器缓存。下一页加载将引用已编译的Java类,并且加载速度应快(有时)可忽略不计。如果CFC不在您的application范围内进行缓存,则必须在每次加载页面时在内存中创建对象,但这不会花很长时间,尤其是在CF-9之后的Adobe CF版本中。

如果页面加载缓慢,请打开调试并找出瓶颈的实际位置。您的查询速度很慢,查询太多,循环太大,试图获取和渲染太多数据,或者其他使事情变慢的东西。