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

Evi*_*mes 3 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
Run Code Online (Sandbox Code Playgroud)

在文件中是普通的旧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>
Run Code Online (Sandbox Code Playgroud)

我们包括这样的菜单:

<cfset FileToInclude = "#var1#-#var2#-#var3.htm">
<cfinclude template="#FileToInclude#">
Run Code Online (Sandbox Code Playgroud)

我真正的问题是,将文件保存为txt,还是html或cfm会有区别吗?使用不同的文件扩展名,服务器会以不同方式处理它吗?如果它有一个txt扩展名,ColdFusion会完全忽略它而不缓存吗?如果它有一个html扩展名,它是否会被处理但是被缓存?

Jam*_*ler 6

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

文本

 <cfinclude template="#FileToInclude#.txt">
Run Code Online (Sandbox Code Playgroud)

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

HTML

   <cfinclude template="#FileToInclude#.html">
Run Code Online (Sandbox Code Playgroud)

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

CFM

   <cfinclude template="#FileToInclude#.cfm">
Run Code Online (Sandbox Code Playgroud)

这描述了实际运行的内容.您可以确保它永远不会作为独立文件运行.因为它有一个.cfm扩展名,所以你希望它由ColdFusion处理.

至于缓存,我认为ColdFusion会将它们全部缓存.

D b

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

 <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>
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个很好的探索.请记住,当您使用CFINCLUDE时,ColdFusion将通过它的解析引擎呈现文件.这是开销和潜在错误的来源,除非它是真正有意的CF代码. (3认同)

Ada*_*ron 5

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

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

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

<cfoutput>#fileRead("/path/to/file")#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

随着ColdFusion的11有一些设置在具有比一个.CFM扩展其他文件时,包括他们没有编制,但作为CF10,他们编译.