1

我有以下目录结构:

| SITES_FOLDER

    |___ WEBSITE1

        |___ WEBSITE_CFC

    |___ CFC_DIR

WEBSITE1 包含一个Application.cfc 和一些页面。然后我在 WEBSITE_CFC 目录中有一个组件 ShoppingCart.cfc 在会话开始时使用以下代码实例化:

createObject("component","WEBSITE_CFC.ShoppingCart").Init() />      

这行得通。

现在我将 ShoppingCart.cfc 移动到 CFC_DIR 目录并将我的实例化代码更改为:

createObject("component","CFC_DIR.ShoppingCart").Init() />      

显然这不起作用,因为 ColdFusion 在根目录“WEBSITE1”下搜索“CFC_DIR”目录但没有找到。

我认为这个问题可以通过使用映射来解决,所以我去找 CFIDE 管理员。服务器设置 > 映射。

Logical path: "CFC_DIR"

Directory path: "C:\some\folders\SITES_FOLDER\CFC_DIR"

没运气。然后我在Application.cfc中尝试了:

<cfset THIS.mappings["/CFC_DIR"] = "C:\some\folders\SITES_FOLDER\CFC_DIR" />

这也不起作用!

编辑:

也许我明白:如果我尝试从 cfm 模板创建 CFC,它就可以工作。

当我尝试在OnSessionStart Application.cfc 的方法中创建它时出现错误:

确保名称正确且组件或接口存在。消息找不到 ColdFusion 组件或接口 C:\some\folders\SITES_FOLDER\WEBSITE1|WEBSITE_CFC\ShoppingCart.cfc。

换句话说,它一直在错误的目录中寻找它。

为什么?

4

1 回答 1

1

如果您将文件更改为 /CFC_DIR 但它仍在使用 /WEBSITE_CFC 听起来缓存需要清除。

在 CF Admin 中清除缓存

可以在 ColdFusion Administrator 中手动清除缓存。登录后,“服务器设置”中的第三项是“缓存”。滚动到页面底部的按钮以清除缓存。

出于开发目的,您可能需要考虑完全禁用此页面上的各种缓存选项 - 它们对于实时服务器的性能改进很有用,但通常对您的开发机器来说是不必要的障碍。

以编程方式清除缓存

如果你有一个自动部署,你不想登录到远程服务器上的 CF Admin 并按下按钮。幸运的是,您还可以通过编程方式清除缓存

<cfscript>
    createObject("Component", "cfide.adminapi.administrator")
        .login("**replace with admin password**");

    RuntimeService = createObject("component", "cfide.adminapi.runtime");

    // Clear whole cache:
    RuntimeService.clearTrustedCache();

    // Clear cache for individual files:
    RuntimeService.clearTrustedCache("/path/to/file1.cfm,/path/to/file2.cfm");

    // Clear component cache:
    RuntimeService.clearComponentCache();
</cfscript>

(代码改编自查理的博客条目。)

Admin Runtime 组件的 API 可以在http://www.cfexecute.com/admin-api-documentation/runtime-cfc/找到

于 2013-01-25T18:34:20.607 回答