jpm*_*yob 8 coldfusion application.cfc
我需要一个现实检查 - 并希望解释(如果我的现实是错误的).
CF应用程序框架评估事物的方式是这个(我的理解) - 请求被传递给cfserver
cf找到application.cfm或cfc(基于遍历规则)
application.cfc执行(如果找到)
设置了此范围(可以在此处设置一系列特定于应用程序的变量
一些是必需的 - 例如"applicationTimeout" - 然后发生一系列事件 - 如果需要则触发方法.
- onApplicationStart()
---- onSessionStart()
------ onRequestStart()
等等
所以我的问题
1)这个设置发生在每个页面请求上 - 之前还有什么?
2)如果我在onApplicationStart()中设置一个应用程序变量 - 它可以在之后发生的任何进程中使用 - 并且应该在内存中持续applicationTimeout()的长度 - 正确吗?
3)所以,如果我做这样的事......
if(isdefined("application.myvar"){this.something = application.myvar;}
它应该在启动应用程序范围的初始请求之后处理任何页面请求.
但它似乎没有这样做.
我的理由是这个 - 有一些有趣的应用程序杠杆设置需要在这个范围内设置......其中一些可能是"密集的"(至少形成执行每个请求的视角 - 所以我想要只做ONCE,在持久性mem中设置一个结构,然后将它们作为这个可用.
我做了一些错误的假设吗?
谢谢
Adr*_*eno -1
Application.cfc 文件内此范围内的任何内容都会成为应用程序变量,并且每个应用程序生命周期仅创建一次。应用程序启动后,Application.cfc 中没有其他用户。
第一次运行 CF 应用程序时,onApplicationStart() 的内容会在 onRequest/Start/End 之前运行(“CF10 中的新功能”onServerStart() 除外)。
在应用程序中任何位置设置的任何应用程序变量都将一直存在,直到应用程序停止为止。
#3 中的代码应该是
if ( !structKeyExists( application, "myvar" ) { application.myvar = foo; }
然后在需要的地方引用 application.myvar 。
根据您的描述,不需要向此范围添加任何内容,只需将其放入应用程序范围即可。
| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |