首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些文件扩展名受ColdFusion的可信缓存的影响

哪些文件扩展名受ColdFusion的可信缓存的影响
EN

Stack Overflow用户
提问于 2011-11-25 13:02:03
回答 3查看 732关注 0票数 6

哪些文件扩展名被可信缓存缓存?CFM和CFC是显而易见的,但是CFR呢?是否还有其他文件扩展名被可信缓存捕获?

我知道/怀疑文件进入模板缓存的一些地方是:

在url ( <cfinclude template="./some.css">)

  • cfmodule,cfmlcfctld?)

  • cfobject,)中直接指定的文件扩展名(在cfinclude中使用的任何文件扩展名,例如<cfinclude template="./some.css">)

  • cfmodule (cfm、more?)

  • cfimport (cfm )、也是jartld?)

  • cfobject,createobject (cfc、.net、com、java和web services?)

  • cfreport ) (cfr?)h 222f 223>)

是否还有其他标记具有将内容添加到模板缓存中的相同效果?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-14 21:37:35

不幸的是,没有官方的消息来源。但是,通过大量的工作,可以对每个标记进行测试,以查看文件是否在可信缓存中结束。

Shawn Holmes' answerSean Corfield's answer分别涵盖了前两个要点。

项目3: cfmodule仅限于cfm文件,因此扩展名是您唯一需要担心的。

项目6: cfreport不应该进入模板缓存,因为它正在转换文件,而不是编译它以供代码执行。

票数 0
EN

Stack Overflow用户

发布于 2011-11-30 17:34:44

Adobe (和ColdFusion )将CFML模板编译为JVM字节码,如果配置为这样做,则将编译后的类(Es)作为.class文件写入磁盘。模板缓存是这样一种机制:如果目标类已经加载,不要费心查看磁盘上的(源文件)文件,看看它是否需要重新编译--信任内存中的内容。

最近对ACF和Railo的增强允许您指定(源文件)可以始终(不受信任)检查,每次请求检查一次,永远不(总是信任)。

这对任何人来说都不应该是新闻。

很明显,ACF和Railo将编译他们被要求处理的任何.cfm或.cfc文件,因此如果启用这些文件,这些文件将“最终”放在可信缓存中。

如果您包含一个文件--任何文件-- ACF和Railo也会将其编译为JVM字节码(如果被配置为这样做,则在磁盘上创建一个.class文件)。由于包含的文件是编译的,它也将在可信缓存中“结束”。如果包含CSS文件,会发生什么情况?它被编译成字节码,将CSS文件的全部内容作为字符串输出到响应流。因为它是一个编译过的类,现在它输出一个硬编码字符串,如果您更改CSS源文件并启用了可信缓存,ACF和Railo将信任类加载器中的内容,而不重新编译它(假设“从不”检查源是管理设置)。

您可以通过清除cfclasses文件夹、重新启动CFML引擎和运行代码来验证这一点。您将看到为您的CSS文件显示一个.class文件(假设您已将类文件保存到磁盘上)。

因此,cfinclude强制编译“任意”文件和可信缓存的常规规则,适用于加载到内存中的类。

我不再使用ACF,所以我不能对.cfr文件进行详细说明(Railo不支持报告文件),但这很可能取决于ACF是否编译.cfr文件。应该很容易验证(通过查看cfclasses文件夹)。

票数 7
EN

Stack Overflow用户

发布于 2011-11-25 18:02:41

默认情况下,ColdFusion附带了映射在JRun中的*.cfm、*.cfc和*.cfml扩展,作为受信任的扩展。您可以通过在\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\中打开j2ee-web.xml和web.xml配置文件来查看这些映射(或者根据您的安装来查看这个文件):

代码语言:javascript
复制
<servlet-mapping id="coldfusion_mapping_3">
    <servlet-name>CfmServlet</servlet-name>
    <url-pattern>*.cfm</url-pattern>
</servlet-mapping>
<servlet-mapping id="coldfusion_mapping_4">
    <servlet-name>CFCServlet</servlet-name>
    <url-pattern>*.cfc</url-pattern>
</servlet-mapping>
<servlet-mapping id="coldfusion_mapping_5">
    <servlet-name>CfmServlet</servlet-name>
    <url-pattern>*.cfml</url-pattern>
</servlet-mapping>

但是,您也可以在这里手动配置全新的映射,这将允许ColdFusion在具有不同扩展名的文件中解析/编译CFML标记(例如,我使用了配置为解析.shtml的CF服务器)。

注意:您还必须为您的web服务器做一些额外的配置,无论是Apache、IIS还是其他什么。

一旦CF被配置为处理具有特定扩展名的文件,就会将其添加到在可信缓存中处理的文件列表中--因为该文件最终等同于隐藏下编译的.class文件。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8269531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档