哪些文件扩展名被可信缓存缓存?CFM和CFC是显而易见的,但是CFR呢?是否还有其他文件扩展名被可信缓存捕获?
我知道/怀疑文件进入模板缓存的一些地方是:
在url ( <cfinclude template="./some.css">)
cfml,cfc,tld?)
<cfinclude template="./some.css">)
cfm、more?)
cfm )、也是jar和tld?)
cfc、.net、com、java和web services?)
cfr?)h 222f 223>)是否还有其他标记具有将内容添加到模板缓存中的相同效果?
发布于 2012-09-14 21:37:35
不幸的是,没有官方的消息来源。但是,通过大量的工作,可以对每个标记进行测试,以查看文件是否在可信缓存中结束。
Shawn Holmes' answer和Sean Corfield's answer分别涵盖了前两个要点。
项目3: cfmodule仅限于cfm文件,因此扩展名是您唯一需要担心的。
项目6: cfreport不应该进入模板缓存,因为它正在转换文件,而不是编译它以供代码执行。
发布于 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文件夹)。
发布于 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配置文件来查看这些映射(或者根据您的安装来查看这个文件):
<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文件。
https://stackoverflow.com/questions/8269531
复制相似问题