如何在不在/ WEB-INF / cfclasses /中创建缓存模板的情况下CFINCLUDE?

时间:2012-08-29 03:16:27

标签: coldfusion include coldfusion-9

是否有任何解决方案或替代ColdFusion标记包含静态文本文件而不在/ WEB-INF / cfclasses下创建模板缓存?

问题是我的动态页面在不断增长。 每个页面都需要包含一个静态文件。

e.g。

<cfinclude template="mapping/static_1.txt> for page 1
<cfinclude template="mapping/static_2.txt> for page 2
<cfinclude template="mapping/static_3.txt> for page 3
....etc.

由于页面数量增长到2000页,因此系统会生成超过服务器限制的2000个缓存tempaltes,导致服务器关闭。

我可以要求托管支持来扩展限制,但对于随时间增长的动态页面而言,这不是一个长期的解决方案。

显然,无需计算,因为要包含的文件是静态文本(.txt),其中包含静态HTML标记(不涉及脚本)。

除了<cfinclude > 之外还有其他替代标记吗?  显示文件内容而不进行二进制计算和缓存创建?

或者是否有任何解决方案可以阻止服务器缓存.txt文件?

很抱歉这个问题可能很简单,但我是CF的新手。 你的指针真的很感激。

干杯 Chanon


我的托管支持不建议一起禁用缓存。

无论如何,我使用<cffile>代替<cfinclude>推出了一个简单的解决方案。

使用<cffile>时,服务器不会执行每一行并创建缓存。相反,它只是抓住整个文件夹并将其放入变量中。

2 个答案:

答案 0 :(得分:5)

如果这些是静态HTML文件,为什么要使用CFINCLUDE?例如,使用FileRead()(或使用FileOpen / FileReadLine / FileIsEOF的更长版本) - 甚至使用action =“read”的CFFILE。

<cfset variables.content = FileRead("mapping/static_1.txt")>
<cfoutput>
    #variables.content#
</cfoutput>

如果没有CFML / CFScript可以处理,那么使用CFINCLUDE毫无意义。

答案 1 :(得分:3)

您根本不需要 来缓存任何已编译的类文件:CFAdmin中有一个设置可以关闭此缓存(在缓存页面上:“保存类文件”)。这些缓存文件只是服务器启动时的一个好处:它可以保存首次访问时重新编译的文件。真的,这个开销几乎可以忽略不计。过去在CFMX6&amp; amp; 7,但从那以后不是那么多。

根据我所知,有没有办法选择&amp;选择哪些文件保存了已编译的类。这是全有或全无。

我想,可以做的是切换设置,编译所有应用程序“主”文件,以便保存其类,然后关闭设置。只要有人向应用程序添加新文件,就需要重复此过程。不过:那不是那么困难。

但是我认为现在保存这些文件没有任何好处。