1

我继承了当前在 Fusebox 4 上运行的 CF 应用程序。

我注意到 CF 管理员中有相当多的应用程序范围超时,而且我不是 100% 关于锁定以及应该在哪里使用 cflock。

<cflock scope="application" type="exclusive" timeout="30">
    <cfinclude template="fusebox4.runtime.cfmx.cfm">
</cflock>

现在我可以在主 fusebox 文件周围看到一个 cflock。我的直觉告诉我,这真的不是一个合理的做法。任何人都可以建议这对于 Fusebox 应用程序是否不正确?

4

2 回答 2

3

我不确定 fusebox.runtime.cfmx.cfm 中是否有任何需要完整应用程序锁定的内容。你应该检查一下。当您为每个请求锁定整个“应用程序范围”时,您正在影响该文件的一种单线程。换句话说,2 个请求不能同时运行这个文件。由于它是框架的通用文件,这极大地影响了您的可伸缩性。正如 Germann 建议明智地使用应用程序 - 通常在应用程序的生命周期内使用一次。

同时,有问题的特定文件(fusebox4.runtime.cfmx.cfm)中有很多与应用程序无关的内容。没有它,您将无法运行框架...我将删除此锁定并检查 fusebox4.runtime.cfmx.cfm 以尝试确定为什么有人认为有必要锁定文件开始。

还有一件事。保险丝盒中某处有一个“MODE”设置,可以设置为 DEV 或“PROD”(我的记忆可能有问题)。可能是您设置为 DEV - 在这种情况下,您想要避免的许多事情都发生在幕后 - 主要是每个请求都在与每个请求一起重新组装“已解析”目录中的文件。所以也检查一下。

于 2012-07-12T13:26:31.447 回答
1

锁定大/长代码块是一种不好的做法。在这种情况下,它应该只在应用程序启动时调用一次(如果您使用 Application.cfc 将其放入 OnApplicationStart() 方法中,如果您仍在 Application.cfm 上,则将其放入 applicationStart/restart if 块中)。

于 2012-07-12T08:43:25.180 回答