ASP中处理#include

在ASP中处理#include 文件与用编译高级编程语言,如C/C++处理包含文件,这两种方法之间有两个主要区别。

第一,ASP不从最终形成的ASP文件中移走那些未涉及到的信息。这是因为ASP独立于脚本引擎,不过多地进行代码

分析。大体说来,如果遇到了ASP文件的基本语法请求,信息就被缓存(假定缓冲器是打开的)并被发送到适当

的脚本引擎,进行进一步的分解、标记及执行。

除了这个“死码”问题,ASP包含文件与编译语言之间的另一个区别在于:每个ASP文件都可以被看作它自己

的程序。只要一个页面不包含另一个,在ASP的意义上看来它们就没有关系,尽管二者对整个站点的运行都很

关键。因此,被两个不同页面所共享的一个#include 文件必须要被两个文件都完全包含。从本质上说,ASP不具

备许多高级语言所具备的连接器的优势,连接器可以用来避免包含文件中代码和数据的冗余。

如果把我所概括的ASP包含文件的问题组合起来,结论就是:它对一个大型站点的内存将是破坏性的。想象

一下这种情况:一个包含文件中包含了可能要用到的所有共享程序。按照这种设计,导致的结果是所有的ASP页

都必须包含这一关键的文件。如果EverythingButTheKitchenSink.inc 经过分解之后与ASP文件的平均长度相同,

那么被ASP分配并为缓存的ASP文件使用的内存中的一半都充满了本来多余没用的信息。

813

调用NT Task Manager/Processes 可以看到正被站点所使用着的内存,并观察一下多少内存是由mtx.exe

(如果站点被设置成独立的程序在IIS4上运行),dllhost.exe (如果站点被设置成独立的程序在IIS5上运行),

或是inetinfo.exe (如果不是独立的,见下面的图)这些程序所使用。想要掌握内存增加得有多快,一个很好的

测试方法是启动IIS后调用一个简单的页面来看看内存的大小。(看内存之前要调用一个ASP文件,因为在处理第

一个ASP文件时要建立一些普通的通用文件)。现在在你的站点上使用其它ASP文件,并监控每一个被使用的ASP文

件对内存的作用。

比如说我创建了ASP文件。第一个文件RunFirst.asp,是一个小文件,在观察内存之前初始化ASP资源。另外

两个文件除了它们所要使用的#include 文件信息不同以外,是完全一样的。将这些文件复制到你的wwwroot目录下,

然后按顺序运行RunFirst.asp, HelloWorld1.asp和 HelloWorld2.asp,执行HelloWorld1.asp和HelloWorld2.asp

之后观察内存,你会发现后者使用了更多的内存。这是因为它使用的#include 文件中有一个很大的未使用的程序,

BigAndUnreferenced, 它对页面的运行结果没有任何作用,但却占据了400K的内存。在Windows 2000 Server

w/ IIS5 上依次进行下列步骤得到的结果是:

运行RunFirst.asp 后内存6,104K

运行HelloWorld1.asp后内存 6,124K

运行HelloWorld2.asp后内存 6,544K

仅仅按照这个顺序没有什么明显的意义,颠倒装载顺序之后的结果是:

运行 RunFirst.asp 后内存6,096K

运行 HelloWorld2.asp后内存 6,536K

运行 HelloWorld1.asp 后内存6,540K

请注意开始和结束的内存数不完全一致,因为内存管理器根据最近的请求大块地分配内存。但是相对而言,

最终的轮廓总是HelloWorld2.asp 占据大块的内存份额。本文结尾处可以下载这些简短的代码。浏览以下这些

代码,但要分清内存的不同:

RunFirst.asp 是这样的:

< %@ LANGUAGE="VBSCRIPT" % >

< HTML >

< HEAD >< TITLE >Seed Page to load general ASP resources< /TITLE >< HEAD >

< BODY >

< %

Response.Write "Seed Page Loaded"

% >

< /BODY >

< /HTML >

HelloWorld1.asp 是这样的:

< %@ LANGUAGE="VBSCRIPT" % >

< !--#include virtual ="/HelloWorld1.inc"-- >

< HTML >

< HEAD >< TITLE >Hello World using little memory< /TITLE >< HEAD >

< BODY >

< %

SayHello

% >

< /BODY >

< /HTML >

HelloWorld1.inc代码是:

< %

Sub SayHello

Response.Write "Hello World 1"

End Sub

% >

HelloWorld2.asp代码是:

< %@ LANGUAGE="VBSCRIPT" % >

< !--#include virtual ="/HelloWorld2.inc"-- >

< HTML >

< HEAD >< TITLE >Hello World using a lot of memory< /TITLE >< HEAD >

< BODY >

< %

SayHello

% >

< /BODY >

< /HTML >

ASP中处理#include

时间: 2024-10-05 11:03:57

ASP中处理#include的相关文章

asp中的md5/sha1/sha256算法收集

对于asp这种古董级的技术,这年头想找一些有用的资料已经不容易了,下面是一些常用的加密算法: md5 (将以下代码另存为md5.inc) + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

php中的include和require的区别

主要关注红色标记语句即可. The include (or require) statement takes all the text/code/markup that exists in the specified file and copies it into the file that uses the include statement. Including files is very useful when you want to include the same PHP, HTML,

Android 布局中的include标签使用

Android 布局中的include标签使用 最近在布局时,有好多页面都是有共同特点的,比如标题:一个同样的样式! 如下图所示: 如果给每个页面都单独的写一个标题的布局那就太麻烦了,如果能写一个标题布局,其它页面重用该多好! 这个时候,<include> 就隆重登场了! 写一个标题的布局 title.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:an

asp中Server.MapPath的使用方法

老是忘记Server.MapPath的使用方法了,下面记录一下,以备后用: 总注:Server.MapPath获得的路径都是服务器上的物理路径,也就是常说的绝对路径 1.Server.MapPath("/") 注:获得应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\. 2.Server.MapPath("./") 注:获得所在页面的当前目录,等价于Server.MapPath(""). 3.Server.MapPath(&qu

fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?

fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""? vs开发时经常遇到没加stdafx.h头文件,解决办法就是吧预编译头去掉! fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""?,布布扣,bubuko.com fatal error C1010: 在查找

ASP中函数调用对参数的影响

在ASP编程中,经常需要自己编写一些函数(或过程)来实现某些特定的功能,这时往往需要向函数(或过程)传递相应的参数 在函数(或过程)中进行数据处理,即有可能需要保留或改变参数的值,下面有相关范例 用下面的函数(TestAddress)就可以使一个函数多个返回值成为可能(一个函数返回值,多个参数改变后的值) 范例: <%@LANGUAGE="VBSCRIPT"%> <% Option Explicit '=================================

Android在layout xml中使用include

在Android的layout样式定义中,可以使用xml文件方便的实现,有时候为了模块的复用,使用include标签可以达到此目的.例如: <include layout="@layout/otherlayout"></div> Android开发的官方网站的说明在这里. 其中,有提到: Similarly, you can override all the layout parameters. This means that any android:layou

ASP中文件上传组件ASPUpload介绍和使用方法

[导读]要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload  要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件,它的下载网址是:           http://www.persits.com/aspupload.exe       组件提供者网址是:           http://www.aspupload.com    

jsp中的@include与jsp:include区别详解

1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include page="xxx.jsp"></jsp:include> 我们也许会使用这两种方式,但是也许很多人不名称这两种方式的区别.下面我们来看看下面的两个例子 2 开门见山引出问题 (1) /include/include.jsp <%@ page language=&