我正在尝试coldfusion中的Application.cfc。我想知道application.cfc是否在内存中是静态的,也就是说,它是为第一个用户创建一次,然后在每个访问它的用户访问相同的application.cfc (在内存中)之后创建的。
举例说明。UserOne访问webpage > Application.cfc是在内存块1创建的。UserTwo访问webpage > Application.cfc在内存块1被再次调用,但函数onRequestStart被调用。
我说application.cfc在内存中是静态的(或直到它过期),还是为每个用户重新创建它,这是正确的吗?如果是的话,这会是一个巨大的内存问题吗?
有没有人能解释一下谢谢。
发布于 2012-10-30 18:40:02
对于每个请求都会执行Application.cfc,但根据情况只运行其中的一部分。伪构造器(在其中设置this.name类型设置)每次都会执行,并且不能有问题地进行更改。只有当应用程序不存在时,onApplicationStart()才会运行。每个会话都可以访问应用程序范围的变量,并且每个应用程序实例(而不是会话实例)只存在一次。onSessionStart()只在新访问者第一次访问站点时运行。还有其他特定于事件的函数
这是另一个可能对你的问题有帮助的帖子。
以及adobe文档:
http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-74fa.html
一个活跃用户计数器就像伪代码一样简单:
onApplicationStart {application.activeUsers = 0}
onSessionStart {application.activeUsers++}
onSessionEnd {application.activeUsers--}澄清一些混乱的
“this”作用域用于设置应用程序设置,如名称、sessionTimeOut或customTagPaths。这些设置内置于ColdFusion中。
<cfscript>
this.customtagpaths = expandPath('./customtags');
this.name = "myCoolWebsite";
this.sessionmanagement = "Yes" ;
this.sessionTimeOut = CreateTimeSpan(0,0,20,0);
</cfscript>尽管“this”作用域与应用程序相关,但您不能使用它来设置持久应用程序作用域变量。应用程序变量是通过使用‘Application’设置的。语法,并且通常最初在onApplicationStart()函数中设置。
<cfset application.myVariable = "I am the same value for every user">发布于 2012-10-30 18:36:40
你的假设是正确的
应用程序事件是应用程序生命周期中发生的特定事件。每次发生这些事件中的一个时,ColdFusion都会运行Application.cfc文件(也称为应用程序CFC)中的相应方法。Application.cfc文件定义应用程序设置并实现处理应用程序事件的方法。
Source
应用程序变量可用于应用程序中的所有页面,即具有相同应用程序名称的页面。因为应用程序变量是持久的,所以您可以很容易地在页面之间传递值。
Source
同样值得注意的是
cflock标记控制对ColdFusion代码的同时访问。cflock标记允许您执行以下操作:
..。
Source
https://stackoverflow.com/questions/13136809
复制相似问题