Coldfusion application.cfc在内存中是静态的吗?

Coldfusion application.cfc在内存中是静态的吗?,coldfusion,application.cfc,Coldfusion,Application.cfc,我正在试验coldfusion中的Application.cfc。我想知道application.cfc是否在内存中是静态的,也就是说,它为第一个用户创建了一次,并且在每个访问它的用户访问内存中的相同application.cfc之后创建 例如。 UserOne访问网页>应用程序。cfc在内存块1处创建。 UserThou再次调用内存块1处的webpage>Application.cfc,但调用了函数onRequestStart 我说application.cfc在内存中是静态的,或者直到它过期

我正在试验coldfusion中的Application.cfc。我想知道application.cfc是否在内存中是静态的,也就是说,它为第一个用户创建了一次,并且在每个访问它的用户访问内存中的相同application.cfc之后创建

例如。 UserOne访问网页>应用程序。cfc在内存块1处创建。 UserThou再次调用内存块1处的webpage>Application.cfc,但调用了函数onRequestStart

我说application.cfc在内存中是静态的,或者直到它过期,或者是为每个用户重新创建的,对吗?如果是,这会是一个巨大的内存问题吗


有人能解释一下吗谢谢。

你的假设是正确的

应用程序事件是应用程序生命周期中的特定事件 申请书。每次发生其中一个事件时,ColdFusion都会运行 您的Application.cfc文件中的相应方法也被引用 作为CFC的应用。Application.cfc文件定义 应用程序设置并实现处理应用程序的方法 事件

应用程序变量可用于应用程序中的所有页面 应用程序,即具有相同应用程序名称的页面。 因为应用程序变量是持久的,所以可以轻松地传递 页面之间的值

也值得一提

cflock标记控制对ColdFusion代码的同时访问。这个 cflock标记允许您执行以下操作:

保护访问和操作中共享数据的代码段 会话、应用程序和服务器范围,以及在请求和 使用ColdFusion线程的应用程序的变量范围。


你的假设是正确的

应用程序事件是应用程序生命周期中的特定事件 申请书。每次发生其中一个事件时,ColdFusion都会运行 您的Application.cfc文件中的相应方法也被引用 作为CFC的应用。Application.cfc文件定义 应用程序设置并实现处理应用程序的方法 事件

应用程序变量可用于应用程序中的所有页面 应用程序,即具有相同应用程序名称的页面。 因为应用程序变量是持久的,所以可以轻松地传递 页面之间的值

也值得一提

cflock标记控制对ColdFusion代码的同时访问。这个 cflock标记允许您执行以下操作:

保护访问和操作中共享数据的代码段 会话、应用程序和服务器范围,以及在请求和 使用ColdFusion线程的应用程序的变量范围。


Application.cfc针对每个请求执行,但根据具体情况,只运行部分请求。每次都会执行用于设置this.name类型设置的伪构造函数,不能有问题地进行更改。onApplicationStart仅在应用程序不存在时运行。应用程序范围的变量对每个会话都是可访问的,并且每个应用程序实例只存在一次,而不是会话实例。onSessionStart仅在新访问者第一次访问站点时运行。还有其他特定于事件的功能

这是另一条可能有助于回答您的问题的线索

以及adobe文档:

活动用户计数器就像伪代码一样简单:

澄清一些混乱

“this”作用域用于设置应用程序设置,如名称、sessionTimeOut或CustomTagPath。这些设置内置于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">

Application.cfc针对每个请求执行,但根据具体情况,只运行部分请求。每次都会执行用于设置this.name类型设置的伪构造函数,不能有问题地进行更改。onApplicationStart仅在应用程序不存在时运行。应用程序范围的变量对每个会话都是可访问的,并且每个应用程序实例只存在一次,而不是会话实例。onSessionStart仅在新访问者第一次访问站点时运行。还有其他特定于事件的功能

这是另一条可能有助于回答您的问题的线索

以及adobe文档:

活动用户计数器就像伪代码一样简单:

澄清一些混乱

“this”作用域用于设置应用程序设置,如名称、sessionTimeOut或CustomTagPath。这些设置内置于ColdFusion中

<cfscript>
    this.customtagpaths = expandPath('./customtags');
    this.name = "myCoolWebsite";
    this.sessionmanagement = "Yes" ;
    this.sessionTimeOut = CreateTimeSpan(0,0,20,0);
</cfscript>
尽管“this”作用域与应用程序相关,但不能使用它设置持久性应用程序作用域变量。应用程序变量通过使用“应用程序”语法设置 nd通常最初在onApplicationStart函数中设置

<cfset application.myVariable = "I am the same value for every user">

那么,如何创建一个为页面中的所有用户更改的变量呢?比如说一个命中计数器。如果你不想因为CF关闭或服务器重新启动而丢失命中计数器,你可以将其存储在数据库中。如果您不介意不时丢失命中计数器,那么应用程序范围将是合适的。那么我如何为页面中的所有用户创建一个更改的变量呢?比如说一个命中计数器。如果你不想因为CF关闭或服务器重新启动而丢失命中计数器,你可以将其存储在数据库中。如果您不介意不时丢失命中计数器,那么应用程序范围将是合适的。我尝试创建一个应用程序变量,该变量在每次请求时递增,每次刷新页面或新用户访问页面时都会重置。显然,这意味着应用程序不是静态的?请确保启用会话管理。如果您已经这样做了,我必须查看代码来回答应用程序变量重置的原因。要启用会话管理:如果您使用的是cfscript,请使用this.sessionmanagement=true;如果您使用的标记都位于application.cfc文件的顶部,位于标记之后的函数之外。啊,您看到我在应用程序类中使用了This.ClientCount,您知道为什么会重置它吗?“This”范围用于设置coldfusion期望的特定于应用程序的设置,例如This.name、This.CustomTagPath、,等等。它不能用于设置应用程序范围变量。为此,请使用application.userDefinedVariable。我相信这个.userDefinedVariable被忽略了。我尝试创建一个应用程序变量,该变量在每次请求时递增,每次刷新页面或新用户访问页面时都会重置。显然,这意味着应用程序不是静态的?请确保启用会话管理。如果您已经这样做了,我必须查看代码来回答应用程序变量重置的原因。要启用会话管理:如果您使用的是cfscript,请使用this.sessionmanagement=true;如果您使用的标记都位于application.cfc文件的顶部,位于标记之后的函数之外。啊,您看到我在应用程序类中使用了This.ClientCount,您知道为什么会重置它吗?“This”范围用于设置coldfusion期望的特定于应用程序的设置,例如This.name、This.CustomTagPath、,等等。它不能用于设置应用程序范围变量。为此,请使用application.userDefinedVariable。我相信这个.userDefinedVariable被忽略了。