coldfusion - 哪些文件扩展名受ColdFusion的Trusted Cache影响

标签 coldfusion coldfusion-9 cfimport

受信任的缓存会缓存哪些文件扩展名? CFM和CFC很明显,但是CFR呢?受信任的缓存还会捕获其他文件扩展名吗?

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

直接在网址中指定的

  • (cfmcfmlcfc以及更多?)
  • cfinclude(在cfinclude中使用的任何文件扩展名,例如<cfinclude template="./some.css">)
  • cfmodule(cfm,更多?)
  • cfimport(cfm,还有jartld吗?)
  • cfobject,createobject(cfc以及.net,com,java和Web服务吗?)
  • cfreport(可以使用cfcompile实用程序编译的cfr吗?)

  • 还有其他标签具有与将内容添加到模板缓存中相同的效果吗?

    最佳答案

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

    ACF和Railo的最新增强功能使您可以指定可以始终(不信任)检查(源)文件,每个请求一次,永不(始终受信任)。

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

    显然,ACF和Railo会编译要求它们处理的任何.cfm或.cfc文件,因此如果启用它们,它们将“终止”在受信任的缓存中。

    如果cfinclude一个文件-任何文件-ACF和Railo也会将该文件编译为JVM字节码(如果配置为在磁盘上创建.class文件)。由于包含的文件已编译,因此它也将“结束”在受信任的缓存中。如果包含CSS文件,那会怎样?它被编译为字节码,该字节码将CSS文件的全部内容作为字符串输出到响应流。由于它是一个已编译的类,因此现在会输出一个硬编码的字符串,如果您更改CSS源文件并启用了受信任的缓存,则ACF和Railo将信任类加载器中的内容,而不重新编译它(假定“从不”检查源是admin环境)。

    您可以通过清除cfclasses文件夹,重新启动CFML引擎并运行代码来验证这一点。您会看到一个.class文件出现在CSS文件中(假设您已启用将类文件保存到磁盘的功能)。

    因此,cfinclude强制编译“any”文件,并且受信任的高速缓存的常规规则适用于加载到内存中的类。

    我不再使用ACF,因此无法详细介绍.cfr文件(Railo不支持报告文件),但这很可能取决于ACF是否编译.cfr文件。它应该很容易验证(通过在cfclasses文件夹中查看)。

    关于coldfusion - 哪些文件扩展名受ColdFusion的Trusted Cache影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269531/

    相关文章:

    coldfusion - CFDocumentItem - 更改字体大小

    javascript - 将名称和值传递给 JavaScript onClick 函数?

    json - 在 ColdFusion 中的另一个 cfc 上下文中执行函数,同时遵循导入语句

    mysql - 用于数据库查询的 Coldfusion Array

    mysql - 查询中的 Coldfusion MySQL 查询

    c# - 在 ColdFusion 中加密,在 C# 中解密

    coldfusion - 使用包含文件的函数会使 Coldfusion 忘记导入。这是正常的吗?

    session - ColdFusion:何时定义 session 变量?

    java - SpreadsheetAddRows 在中等大小的查询上失败