Cookies 锁定指向对象实例的ColdFusion应用程序变量

Cookies 锁定指向对象实例的ColdFusion应用程序变量,cookies,coldfusion,locking,scope,Cookies,Coldfusion,Locking,Scope,我正在CF9上运行我的应用程序。我创建了一个CFC来集中处理我的饼干,而不是到处乱扔标签。这很简单。它有两个属性name、value,并有5个方法setCookie、deleteCookie、verifyCookie、clearAllCookie和init 由于我希望此方法在整个应用程序中都可用,因此我将此代码放在application.cfc文件的onApplicationStart方法中: application.oCookie = createObject("com.mycookie").

我正在CF9上运行我的应用程序。我创建了一个CFC来集中处理我的饼干,而不是到处乱扔标签。这很简单。它有两个属性name、value,并有5个方法setCookie、deleteCookie、verifyCookie、clearAllCookie和init

由于我希望此方法在整个应用程序中都可用,因此我将此代码放在application.cfc文件的onApplicationStart方法中:

application.oCookie = createObject("com.mycookie").init();
当我需要在任何代码文件中设置cookie时,我只是这样调用它:

application.oCookie.name="testCookieName";
application.oCookie.value="testCookieValue";
application.oCookie.setCookie();
我的问题是:每次我这样做时是否需要锁定此代码?如果两个单独的用户在同一时刻访问此代码,我是否可以设置混合的cookie值?

为了使您的oCookie线程安全,它必须是一个没有状态的单例,只能充当或cookie作用域的薄层

因此,您应该设计com.mycookie,使其接受application.oCookie.setCookiename,而不是值。并确保您在mycokie的variables范围内定义了所有内容,并且没有存储任何内容

我认为你不需要使用cflock

如果您还没有签出,您可能需要签出。

为了使您的oCookie线程安全,它必须是一个没有状态的单例,只能作为或cookie作用域的薄层

因此,您应该设计com.mycookie,使其接受application.oCookie.setCookiename,而不是值。并确保您在mycokie的variables范围内定义了所有内容,并且没有存储任何内容

我认为你不需要使用cflock


如果您还没有结账,您可能需要结账。

谢谢您的回答。我没有意识到用传递的参数调用它,而不是修改属性,然后调用该方法将作为单个线程运行。这是有道理的。它还有一个额外的好处,就是减少了我呼叫它时所需的线路数!是的,当您执行oCookie.X=Y时,它与在com.mycokie类中设置此.X相同。CFC的这个范围和变量范围是CFC实例的本地范围。如果只有一个实例,它们将被共享。因此,您应该只依赖于参数和输入的局部范围,并且变量范围中只有常量。这个范围实际上只适用于公共功能,而不适用于属性。谢谢您的回答。我没有意识到用传递的参数调用它,而不是修改属性,然后调用该方法将作为单个线程运行。这是有道理的。它还有一个额外的好处,就是减少了我呼叫它时所需的线路数!是的,当您执行oCookie.X=Y时,它与在com.mycokie类中设置此.X相同。CFC的这个范围和变量范围是CFC实例的本地范围。如果只有一个实例,它们将被共享。因此,您应该只依赖于参数和输入的局部范围,并且变量范围中只有常量。这个范围实际上只适用于公共函数,而不适用于属性。