Coldfusion 静态文件应该保存为TXT、CFM或HTML吗?

Coldfusion 静态文件应该保存为TXT、CFM或HTML吗?,coldfusion,coldfusion-10,Coldfusion,Coldfusion 10,我们有一个创建成千上万个静态文件的过程。每个文件都是从运行几秒钟的查询中创建的。每个文件中的数据每周更改一次。这些文件每天提供50万次。因此,尽可能高效地命名、存储和检索这些文件似乎是非常有益的 目前,这些文件的名称如下: 123-111-1.htm 123-112-1.htm 123-113-1.htm 456-111-2.htm 456-112-2.htm 456-133-2.htm 在这些文件中是普通的旧HTML菜单。此页中未处理任何内容。实际上,可能有50个链接 <h1>C

我们有一个创建成千上万个静态文件的过程。每个文件都是从运行几秒钟的查询中创建的。每个文件中的数据每周更改一次。这些文件每天提供50万次。因此,尽可能高效地命名、存储和检索这些文件似乎是非常有益的

目前,这些文件的名称如下:

123-111-1.htm
123-112-1.htm
123-113-1.htm
456-111-2.htm
456-112-2.htm
456-133-2.htm
在这些文件中是普通的旧HTML菜单。此页中未处理任何内容。实际上,可能有50个链接

<h1>Company Name</h1>
<ul>
   <li><a href="index.cfm">some link</a></li>
   <li><a href="index.cfm">some link</a></li>
   <li><a href="index.cfm">some link</a></li>
   <li><a href="index.cfm">some link</a></li>
</ul>
公司名称
我们包括如下菜单:

<cfset FileToInclude = "#var1#-#var2#-#var3.htm">
<cfinclude template="#FileToInclude#">


我真正的问题是,将文件保存为txt、html或cfm之间会有区别吗?对于不同的文件扩展名,服务器是否会对其进行不同的处理?如果它有一个txt扩展名,ColdFusion会完全忽略它而不缓存它吗?如果它有一个html扩展名,它不会被处理而是被缓存吗

让我们看看每个选项都需要什么

txt

 <cfinclude template="#FileToInclude#.txt">
这是对内容的更具描述性的描述。Web服务器很可能会尝试显示它。在ColdFusion中,它将处理它,就像它有可能不是您所期望的标记一样

cfm

   <cfinclude template="#FileToInclude#.cfm">

这样,您就不必处理数百个菜单文件。您可以控制缓存,使其完全符合您的要求。而且它可能会减少服务器上的负载

如果包含该文件,CF将对其进行解析、编译和处理。如果文件中没有CFML,这是浪费时间。它还将把生成的编译类放入服务器内存中,这是另一个次要考虑事项,但仍然是一个考虑事项

您应该根据文件的内容为文件命名。这些文件中包含HTML,因此它们应该具有.HTML扩展名

如果您只想在屏幕上获取文件内容,只需读取文件并将其输出:

<cfoutput>#fileRead("/path/to/file")#</cfoutput>
#fileRead(“/path/to/file”)#

从ColdFusion 11开始,在某些设置中,扩展名不是.cfm的文件在包含时不被编译,但从CF10开始,它们被编译。

这是一个很好的解释。请记住,当您使用CFINCLUDE ColdFusion时,它将通过文件的解析引擎呈现文件。这是开销和潜在错误的来源,除非它是真正有意的CF代码。如果我真的必须通过文件执行此操作,我想我会使用
fileread()
James,我之前考虑过您的DB解决方案。我认为这是一个很好的解决方案,可能是我们这个案例中最好的解决方案。但这些功能可能真的很像老式的平面文件解决方案(关于非编译选项,是在cfadmin中还是在
application.cfc
中,还是两者都有?我可能需要一张截图这是我从CF11预发布版和谷歌(大部分是我)中对它的分析:哦,他们已经更改了它的语法:
 <cfquery name="qryMenu" cachedwithin="#CreateTimeSpan(0, 6, 0, 0)#">
     SELECT menu
     FROM dbo.menu
     WHERE section1 = <cfqueryparam value = "#section1#" cfsqltype = "cf_sql_integer">
     AND section2 = <cfqueryparam value = "#section2#" cfsqltype = "cf_sql_integer">
     AND section3 = <cfqueryparam value = "#section3#" cfsqltype = "cf_sql_integer">
 </cfquery>

 <cfoutput query="qryMenu">#menu#</cfoutput>
<cfoutput>#fileRead("/path/to/file")#</cfoutput>