许多包含(在“案例中”)的ASP经典会损害服务器的性能吗?

时间:2012-07-10 11:13:19

标签: asp-classic

我想用ASP classic构建这个页面:

<%
Dim depart

depart = 1556


Select Case depart
    Case 1
    %>
    <!--#include virtual="/check/noam/newDesign/test1.asp"-->
    <%
    Case 2
    %>
    <!--#include virtual="/check/noam/newDesign/test2.asp"-->
    <%
    Case 3
    %>
    <!--#include virtual="/check/noam/newDesign/test3.asp"-->
    <%
    Case 4
    %>
    <!--#include virtual="/check/noam/newDesign/test4.asp"-->
    <%
    Case 5
    %>
    <!--#include virtual="/check/noam/newDesign/test5.asp"-->
    <%
    Case 6
    %>
    <!--#include virtual="/check/noam/newDesign/test6.asp"-->
    <%
    Case 7
    %>
    <!--#include virtual="/check/noam/newDesign/test7.asp"-->
    <%
    Case 8
    %>
    <!--#include virtual="/check/noam/newDesign/test8.asp"-->
    <%
End If
%>

我想知道后台的服务器是否需要输入每个包含,或者他只会输入正确的包含? 我需要知道,因为我想知道服务器是否会因此而性能不佳。

3 个答案:

答案 0 :(得分:2)

这实际上取决于包含内部的内容,但我不希望这样的结构对性能产生任何可观察的影响,除非你有100个case语句或每秒有100个请求页面。

确实,在执行代码之前,所有包含都将首先组成脚本,但是也应该记住,最终脚本的编写和解析的“p代码”版本是由ASP缓存的。

如果包含主要只是静态HTML内容,那么这种方法实际上非常有效。另一方面,更多的内联全局标识符(未包含在SubFunctionClass中的标识符)在脚本上下文中注册这些标识符所需的时间越多(但仍然需要到很多他们做出明显的区别。)

一种可能的替代方法是使用Server.Execute而不是包含。在这种情况下,执行的ASP有自己独立的脚本上下文,因此它不能共享调用者函数和变量(这可能是也可能不是一件好事。)同样很可能Server.Execute实际上会变慢

答案 1 :(得分:1)

包含在经典ASP中执行之前已加载,因此您基本上都会加载所有这些包含,即使它们未被执行。

您可以使用不同的模式:Execute Global,这相当于在VB中使用eval()。您将文件作为字符串读入,然后执行它。这包含了一系列包含但本身相当丑陋。

答案 2 :(得分:1)

你可以使用 server.execute

server.execute("/check/noam/newDesign/test"&depart&".asp")

page="/check/noam/newDesign/test"&depart&".asp"

server.execute(page)