我继承了目前在Fusebox 4上运行的CF应用程序。
我注意到CF管理员中有相当多的应用程序范围超时,我不是100%关于锁定以及应该使用cflock的地方。
<cflock scope="application" type="exclusive" timeout="30">
<cfinclude template="fusebox4.runtime.cfmx.cfm">
</cflock>
现在我可以看到主熔丝盒文件周围的cflock。我的直觉告诉我,这真的不是一个合理的做法。任何人都可以建议Fusebox应用程序是否不正确吗?
答案 0 :(得分:3)
我不确定在fusebox.runtime.cfmx.cfm中是否有任何需要完整应用程序锁定的内容。你应该检查一下。当您为每个请求锁定整个“应用程序范围”时,您正在影响该文件的某种单线程。换句话说,2个请求无法同时运行此文件。由于它是框架的通用文件,因此极大地影响了您的可伸缩性。正如Germann建议明智地使用一个应用程序 - 通常一次用于应用程序的生命周期。
同时,有问题的特定文件(fusebox4.runtime.cfmx.cfm)中包含许多与应用程序无关的内容。没有它你就无法运行框架...我会删除这个锁并检查fusebox4.runtime.cfmx.cfm以尝试确定为什么有人觉得有必要先锁定文件。
还有一件事。保险丝盒中某处有一个“MODE”设置,可以设置为DEV或“PROD”(我的记忆可能有问题)。可能是你被设置为DEV - 在这种情况下你想要避免的事情发生在很多事情 - 主要是每个请求都是在每个请求的“解析”目录中重新组装文件。所以也检查一下。
答案 1 :(得分:1)
锁定大/长代码块是一种不好的做法。在这种情况下,应该只在应用程序启动时调用一次(如果你使用Application.cfc将它放在OnApplicationStart()方法中,如果你仍然在Application.cfm上,那么将它放在applicationStart / restart中,如果阻止)。