ColdFusion 服务器 CFC 缓存问题
我在笔记本电脑上使用其自己的 ColdFusion 8 服务器和 IIS(在 Windows Vista 上运行)开发 ColdFusion 应用程序。我有一个相当烦人的问题。
问题是每当我对 CFC 进行任何更改时,除非重新启动 ColdFusion 应用程序服务器,否则对 CFC 的更改将不会生效。很多时候,我必须重新启动整个计算机,因为 Windows 无法重新启动 ColdFusion Application Server 服务。有没有更好的方法来重置 ColdFusion 服务器的 cfc 缓存?
这开始占用大量时间,只是在我做出更改后必须经常重新启动。任何见解将不胜感激!
谢谢你!
I develop coldFusion applications on my laptop with it's own ColdFusion 8 server with IIS which run on Windows Vista. I am having a rather annoying problem.
The problem is whenever I make any changes to my CFC's, it appears that unless I restart my ColdFusion Application server, the changes to my CFC's will not take effect unti I do so. Often times, I have to restart my whole machine because Windows can't restart the ColdFusion Application Server service. Is there a better way to reset the ColdFusion Server's cfc cache?
This is beginning to suck up a lot of time just having to restart every so often after I make a change. Any insight would be greatly appreciated!
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(8)
如果您必须在开发中进行缓存,您可以执行我所做的操作:
首先在 onRequest() 方法的顶部检查 URL 标志,该方法将调用 onApplicationStart() 方法:
<cfif IsDefined("URL.dev")>
<cflock timeout="5" scope="Session" type="Exclusive">
<cfif URL.dev EQ true>
<cfset SESSION.debug = true />
<cfelse>
<cfset StructDelete(SESSION, "debug") />
</cfif>
</cflock>
</cfif>
<cflock timeout="5" scope="Session" type="Readonly">
<cfif IsDefined("URL.appreset") or IsDefined("SESSION.dev")>
<cfset StructClear(SESSION) />
<cfset onApplicationStart() />
</cfif>
</cflock>
这将解决您的大部分问题。但是,如果正在加载的类出现问题,则无法检查此标志。我为此使用的解决方案:
将以下内容添加到 onError() 方法的底部:
<cfif IsDefined("APPLICATION")>
<cfset StructClear(APPLICATION) />
</cfif>
最后,您要检查 APPLICATION 对象是否存在,以及您声明为 APPLICATION 范围一部分的每个类是否存在或您想要调用onApplicationStart()。为此,请在 onRequestStart() 顶部的第一个代码块的正下方添加以下内容:
<cfif not IsDefined("APPLICATION")
OR not StructKeyExists(APPLICATION, "[ClassName1]")
OR not StructKeyExists(APPLICATION, "[ClassName2]")
...>
<cfset onApplicationStart() />
</cfif>
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我保证您将它们创建为某种持久范围内的对象,例如:应用程序、会话范围。在开发过程中,为避免此问题,我通常会创建一个 url 参数,并在 application.cfm/cfc 文件(或创建对象的任何位置)中检查该参数,如果检测到该 url 参数,则重新创建对象。
示例:
当然,您需要对遇到问题的每个对象执行此操作。
I guarantee you are creating these as objects in some sort of persistent scope, eg: application, session scopes. What I generally do to avoid this problem during development is create a url parameter and check for that in the application.cfm/cfc file (or wherever you are creating the objects) and recreate the objects if that url parameter is detected.
Example:
of course you would need to do this with every object that you are having a problem with.