是否有任何解决方案或替代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>
时,服务器不会执行每一行并创建缓存。相反,它只是抓住整个文件夹并将其放入变量中。
答案 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;选择哪些文件保存了已编译的类。这是全有或全无。
我想,可以做的是切换设置,编译所有应用程序“主”文件,以便保存其类,然后关闭设置。只要有人向应用程序添加新文件,就需要重复此过程。不过:那不是那么困难。
但是我认为现在保存这些文件没有任何好处。