静态文件应保存为TXT,CFM还是HTML?

时间:2014-12-16 15:06:51

标签: coldfusion coldfusion-10

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

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

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菜单。此页面中没有处理任何内容。实际上,可能有五十个链接。

<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扩展名,它是否会被处理但是被缓存?

2 个答案:

答案 0 :(得分:6)

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

<强> TXT

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

我们知道内容不是纯文本,因此此文件扩展名不会描述其内容。您可以将Web服务器配置为不显示.txt个文件。在内部,ColdFusion将处理它,就好像它有标签,这可能不是你所期望的。

<强> HTML

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

这是对内容的更具描述性。网络服务器很可能会尝试显示它。在ColdFusion中,它将处理它,好像它有可能不是你期望的标签

<强> CFM

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

这是对正在运行的内容的描述。您可以确保它永远不会作为独立文件运行。因为它具有.cfm扩展名,所以您希望它由ColdFusion处理。

至于缓存,我认为ColdFusion会对它们进行同样的缓存。

<强>分贝

您还应该考虑将数据存储在db

 <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>

这样您就不必处理数百个菜单文件。您可以将缓存控制到您想要的内容。它可能会减少您服务器上的负载。

答案 1 :(得分:5)

如果包含该文件,CF将解析,编译和处理它。如果文件中没有CFML,这是浪费时间。它还会将生成的编译类放入服务器内存中,这是另一个次要考虑因素,但仍需考虑。

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

如果您只想在屏幕上获取文件的内容,只需阅读该文件并输出即可:

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

从ColdFusion 11开始,有一些设置,其中包含非.cfm扩展名的文件在编译时不会被编译,但从CF10起,它们 编译。