「インクルードされる側のファイルが、ほかのファイルをインクルードすることもできます」
.asp ファイルでは、同じファイルを何度もインクルードすることができます。
ただし、これは #include ディレクティブがループを発生させない場合に限ります。
たとえば、ファイル First.asp がファイル Second.inc をインクルードする場合、Second.inc が First.asp をインクルードすることはできません。
また、ファイルがそのファイル自体をインクルードすることもできません。
ASP はこのようなループやネストのエラーを検出し、エラーメッセージを表示して、要求された .asp ファイルの処理を停止します。
ASP は、スクリプト コマンドを実行する前にファイルをインクルードします。
「したがって、スクリプト コマンドを使って、インクルードされるファイルの名前を作成することはできません」
|
たとえば、次のスクリプトではファイル Header1.inc は開けません。これは、変数 name にファイル名が代入される前に、ASP が #include ディレクティブを実行しようとするためです。
|
|
<!-- This script will fail -->
<% name=(header1 & ".inc") %>
<!-- #include file="<%= name %>" -->
| |
|
|
|
スクリプト コマンドおよびプロシージャは、スクリプトの区切り記号 <% と %> の間
HTML タグ <SCRIPT> と </SCRIPT> の間
または HTML タグ <OBJECT> と </OBJECT> の間に完全な形で含まれている必要があります
| |
|
「つまり、インクルードする側の .asp ファイルでスクリプトの区切り記号を開き、
インクルードされる側のファイルで区切り記号を閉じることはできません。」
|
間違った書き方
|
<!-- This script will fail -->
<%
For i = 1 To n
statements in main file
<!-- #include file="header1.inc" -->
Next
%>
| |
|
|
正しい書き方
|
<%
For i = 1 to n
statements in main file
%>
<!-- #include file="header1.inc" -->
<% Next %>
| |
|
|
ASP スクリプトがインクルードするファイルに、インクルードしているスクリプトで使用されない関数および変数が多数含まれている場合は、使用しない構造体によってリソースが必要以上に占有されてしまうため、パフォーマンスに悪影響を与え、最終的には Web アプリケーションの拡張性を低下させる可能性があります。
そこで通常は、不必要な情報が含まれている 1 つまたは 2 つの大きなインクルード ファイルをインクルードするのではなく、インクルード ファイルを複数の小さなファイルに分割し、サーバー側スクリプトで必要とするファイルのみをインクルードすることをお勧めします
|
場合によっては、HTML の タグを使用して、サーバー側ファイルをインクルードする方が適していることがあります。
たとえば、次のスクリプトでは、サーバーが相対パスにより実行可能なファイルをインクルードしています。
|
|
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utils\datasrt.inc"></SCRIPT>
| |
|
|
次の表では、仮想パスまたは相対パスにより SRC 属性を持つファイルをインクルードするときの正しい構文を示します
|
パスの種類 |
構文 |
例 |
相対 |
SRC="Path\Filename" |
SRC="Utilities\Test.asp" |
仮想 |
SRC="/Path/Filename" |
SRC="/MyScripts/Digital.asp" |
仮想 |
SRC="\Path\Filename" |
SRC="\RegApps\Process.asp" |
|