2

I want to build this page with 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
%>

And I like to know if the server in the background need to enter to every include or he will enter only to the include in the right case? I need to know that because I like to know if the server will get bad performance with this one.

4

3 回答 3

2

这实际上取决于包含的内容,但我不希望这样的结构对性能产生任何明显的影响,除非您有 100 条案例语句或每秒有 100 条页面请求。

确实,在执行代码之前,所有包含将首先组合到脚本中,但是还应该记住,最终脚本的组合和解析的“p-code”版本由 ASP 缓存。

如果包含主要只是静态 HTML 内容,那么这种方法实际上非常有效。另一方面,内联全局标识符(未包含在Sub,Function或中的标识符Class)越多,在脚本上下文中注册这些标识符所需的时间就越多(但是仍然需要很多标识符才能产生显着差异)。

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

于 2012-07-10T12:27:55.863 回答
1

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

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

于 2012-07-10T11:34:29.567 回答
1

您可以使用 server.execute

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

或者

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

server.execute(page)
于 2021-02-26T17:27:46.447 回答