Coldfusion MX技巧精华收集2

Coldfusion MX技巧精华收集2

2004/11/7 2:24:00来源:本站整理作者:蓝点我要评论(0)

            
             
              
             
            

               
               

            



            让客户端变量逾期

作者: Kyle 2/16/03


内容:


让客户端变量逾期
这些方式的其中之一便是客户端变量(client variable)。客户端变量和使用者状态变量(session variables)类似,不同之处在于使用者状态变量是储存在 ColdFusion 服务器的内存中,而客户端变量则是储存在 cookie 里面,Windows 注册数据库(Windows registry)或者外部的数据库服务器里面。这项差异乍看之下并不太重要,然而如果你使用一系列 ColdFusion 服务器搭配组成负载平衡(load-balance)环境的话,这项差异性就变得非常关键了。


在负载平衡服务器环境之下,你永远无法得知哪一部服务器会被指定来处理哪一个使用者发出的请求。负载平衡硬件或者软件纯粹仅是将接收到的使用者请求传递给当时负载最轻的服务器来处理。在这样的状况下我们无法正常运用使用者状态变量,因为某部服务器上面储存的使用者状态变量,对于其它服务器而言都是不可见的。每当负载平衡硬件(或者软件)将同一个使用者从某部伺服器重新导向到另一部服务器(亦即:该使用者的某次请求被分配给 A 服务器来处理,而下一次请求却被分配给 B 服务器来处理),使用者状态变量便会立刻消失不见。


要解决这个问题的方法之一便是使用客户端变量,将使用者相关信息储存在另一部所有参与负载平衡的服务器皆可存取得到的外部数据库里面。然而这项作法本身却又会带来其它必须考量的问题,特别是如果你要透过客户端变量来储存储存敏感性或者安全性资料的时候。你可以设定让客户端变量在某段时间之后便过期失效,但是这个时间间隔最短只能设定成一天。如果你储存的是使用者认证相关资料,你应该会想要让这段逾期时间设定成更短,例如十五分钟。要做到这项短时间逾期功能,你只需要多加一些额外的 CFML 程序代码。


我建立了另一个称作 CF_ClientTimeout 的自订卷标来替你处理这个问题。同样地,你可以直接在 Allaire 公司的开发情报交换中心网站上下载使用。这个卷标透过日期与时间相关函数来把目前时间与使用者上一次存取某个页面的时间加以比对,如果两者的时间差距大于你自己设定的某个时间长度,那么该使用者的相关信息便会被视为已经逾期并且失去效用。如果你在 applicaiton.cfm 这个档案里面使用这个卷标,那么这个卷标便会在同一个应用程序里面的所有页面里头进行这项时间比对工作。相关的程序代码如下:











如果你输入 TimeOut 变量的值为 30TimeOut = 30),那么使用者便会在连续三十分钟没有作任何动作之后,被系统视为已经逾期。一旦被系统视为逾期,下一次该使用者试图再次存取某个页面的时候,这个自订卷标便会传回 TimeOut 变量的值为「Yes」,你可以使用一个 CFIF 叙述来判断这个变量值,并且将逾期使用者的相关客户端变量删除掉,或者修改某个认证变量的值(例如将 CLIENT.VALIDATED 变量的值设定成「No」,CLIENT.VALIDATED = "No"),并且接着执行一段使用者登入程序。


善用应用程序变量


作者: Kyle 2/16/03


内容:


善用应用程序变量
应用程序变量(Application variables)对于同一个应用程序中的所有页面来说都是可随时叫用的。通常这类变量都是设定在 application.cfm 这个档案里面,但是它们也可以在其它单一页面里面设定。应用程序变量对于储存整个应用程序共享的资料来说非常有用,例如资料来源名称,绝对路径或者颜色设定资料等等。


为了展示一下应用程序变量的用处,在这里我打算说明如何以应用程序变量来储存颜色设定资料。虽然 4.0 以及更新版本等支持 CSS 的浏览器占有率日渐提高,还是有很多使用者仍然在继续使用旧版浏览器。如果你仍在使用 卷标来设定文字样式,并且使用 color 属性来设定表格与文字的颜色,那么你应该心知肚明当日后要修改网站的颜色设定的时候,你的恶梦就要开始了!使用 ColdFusion,我们可以用另一种更轻松有效的方式来设定页面的各种颜色:那就是把色彩设定储存在应用程序变量里面。一旦你把颜色设定透过应用程序变量储存起来,你就可以透过变量名称来参照到这些颜色,而非直接将色彩名称(或者 16 进位色码)直接写在程序里面。进一步来看,你只需要修改这些应用程序变量的值,那么所有相关的页面中的颜色就会一起改变。


在你的 application.cfm 档案里面,你可以设定一个应用程序变量让它的值包含一个空白结构(结构是一个键-值配对或者一个二维数组):




application.colors=structNew();

这样一来你便有了一个名为 Application.Colors 的应用程序变量了,该变量的值是一个空白结构。接下来你便可以将需要用的颜色名称储存在这个空白结构里面。下面是一个例子:




application.colors=structNew();
application.colors.body='FFFFFF';
application.colors.text='708090';
application.colors.link='C0F171';
application.colors.blue='131E63';
application.colors.red='C01531';
application.colors.yellow='FFFFE6';

现在在你的页面里头你便不再需要将颜色名称直接写进去,只要直接参照 Application.Colors 里面的变量就可以了。举例来说,在 卷标里面你可以使用下面这样的写法:




BGCOLOR="#application.colors.body#"
TEXT="#application.colors.text#"
LINK="#application.colors.link#">

你可以把这个技巧应用在表格,框线或者其它任何使用到颜色属性的地方。如此一来,你便可以很轻松地随时调整网站的颜色设定,因为所有的颜色都储存在同一个地方,修改起来非常容易。


记得适时锁定
在读取或者设定应用程序(application),使用者状态(session)或者服务器这些范围的变量的时候,很重要的一点是在适当的变量范围内使用 CFLOCK 卷标进行变量的锁定。CFLOCK 卷标可以确保共享资料的完整与一致性,在高流量的服务器上面,这项工作尤显重要。如果你需要更多这方面的资料,请阅读你的使用说明文件,或者参考 ColdFusion 开发者期刊(ColdFusion Developer's Journal)网站上面的这篇文章。


善用应用程序变量


作者: Kyle 2/16/03


内容:


善用应用程序变量
应用程序变量(Application variables)对于同一个应用程序中的所有页面来说都是可随时叫用的。通常这类变量都是设定在 application.cfm 这个档案里面,但是它们也可以在其它单一页面里面设定。应用程序变量对于储存整个应用程序共享的资料来说非常有用,例如资料来源名称,绝对路径或者颜色设定资料等等。


为了展示一下应用程序变量的用处,在这里我打算说明如何以应用程序变量来储存颜色设定资料。虽然 4.0 以及更新版本等支持 CSS 的浏览器占有率日渐提高,还是有很多使用者仍然在继续使用旧版浏览器。如果你仍在使用 卷标来设定文字样式,并且使用 color 属性来设定表格与文字的颜色,那么你应该心知肚明当日后要修改网站的颜色设定的时候,你的恶梦就要开始了!使用 ColdFusion,我们可以用另一种更轻松有效的方式来设定页面的各种颜色:那就是把色彩设定储存在应用程序变量里面。一旦你把颜色设定透过应用程序变量储存起来,你就可以透过变量名称来参照到这些颜色,而非直接将色彩名称(或者 16 进位色码)直接写在程序里面。进一步来看,你只需要修改这些应用程序变量的值,那么所有相关的页面中的颜色就会一起改变。


在你的 application.cfm 档案里面,你可以设定一个应用程序变量让它的值包含一个空白结构(结构是一个键-值配对或者一个二维数组):




application.colors=structNew();

这样一来你便有了一个名为 Application.Colors 的应用程序变量了,该变量的值是一个空白结构。接下来你便可以将需要用的颜色名称储存在这个空白结构里面。下面是一个例子:




application.colors=structNew();
application.colors.body='FFFFFF';
application.colors.text='708090';
application.colors.link='C0F171';
application.colors.blue='131E63';
application.colors.red='C01531';
application.colors.yellow='FFFFE6';

现在在你的页面里头你便不再需要将颜色名称直接写进去,只要直接参照 Application.Colors 里面的变量就可以了。举例来说,在 卷标里面你可以使用下面这样的写法:




BGCOLOR="#application.colors.body#"
TEXT="#application.colors.text#"
LINK="#application.colors.link#">

你可以把这个技巧应用在表格,框线或者其它任何使用到颜色属性的地方。如此一来,你便可以很轻松地随时调整网站的颜色设定,因为所有的颜色都储存在同一个地方,修改起来非常容易。


记得适时锁定
在读取或者设定应用程序(application),使用者状态(session)或者服务器这些范围的变量的时候,很重要的一点是在适当的变量范围内使用 CFLOCK 卷标进行变量的锁定。CFLOCK 卷标可以确保共享资料的完整与一致性,在高流量的服务器上面,这项工作尤显重要。如果你需要更多这方面的资料,请阅读你的使用说明文件,或者参考 ColdFusion 开发者期刊(ColdFusion Developer's Journal)网站上面的这篇文章。

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 囧
      囧
  • 0 恶心
      恶心
  • 0 期待
      期待
  • 0
      难过
  • 0 不错
      不错
  • 0 关注
      关注
  • 最新评论
  • 热门评论
共有评论(0)条 查看全部评论
高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲

注:您的评论需要经过审核才会显示出来