我想用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
%>
我想知道后台的服务器是否需要输入每个包含,或者他只会输入正确的包含? 我需要知道,因为我想知道服务器是否会因此而性能不佳。
答案 0 :(得分:2)
这实际上取决于包含内部的内容,但我不希望这样的结构对性能产生任何可观察的影响,除非你有100个case语句或每秒有100个请求页面。
确实,在执行代码之前,所有包含都将首先组成脚本,但是也应该记住,最终脚本的编写和解析的“p代码”版本是由ASP缓存的。
如果包含主要只是静态HTML内容,那么这种方法实际上非常有效。另一方面,更多的内联全局标识符(未包含在Sub
,Function
或Class
中的标识符)在脚本上下文中注册这些标识符所需的时间越多(但仍然需要到很多他们做出明显的区别。)
一种可能的替代方法是使用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)