我在CF 9上运行我的应用程序。我创建了一个CFC来集中我的cookie处理而不是散布的所有标签。很简单。它有两个属性(名称,值),并有5个方法(setCookie,deleteCookie,verifyCookie,clearAllCookies和init)。
由于我希望这个方法在整个应用程序中可用,我将此代码放在application.cfc文件的onApplicationStart方法中:
application.oCookie = createObject("com.mycookie").init();
当我需要在任何代码文件中设置cookie时,我只是这样称呼它:
application.oCookie.name="testCookieName";
application.oCookie.value="testCookieValue";
application.oCookie.setCookie();
我的问题是:每次执行此操作时,是否需要锁定此代码?如果两个单独的用户在同一时刻访问此代码的页面上,我最终会设置混合cookie值吗?
答案 0 :(得分:5)
要使oCookie
线程安全,它必须是一个单独的(没有状态),只能作为<cfcookie>
或cookie
范围的薄层。 / p>
因此,您应该设计com.mycookie
,以便接受application.oCookie.setCookie(name, value)
。并确保您对所有内容进行了变更,并且不会在variables
mycookie
范围内存储任何内容。
我认为你不需要使用cflock。
如果您还没有,可能需要结帐WireBox。