使用SHTML更好的维护门户网站(转)

< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd>
转自:http://blog.breakn.net/article.asp?id=266
目前为部分访问量大的页面自动生成HTML的方式,不过一些很多页面都要用到的菜单什么的如果要改就要改好几个页面很是郁闷。之前老早就知道SSI技术,不过只是知道有这个东东,怎么去用不太知道,只知道可以使用# include 使用SHTML更好的维护门户网站(转) - netcorner - netcorner的博客 ~~~浪费啊~~~~

1)、为什么要用shtml
  • 按照官方的解释,shtml属于静态网页范畴,因此shtml比asp执行的速度快。也正因为如此,在服务器asp死锁时可以照常运转。
  • 它可以包含文件,比如直接include进来一个文件,这个大家都知道了,这也是为什么这么多人用shtml的主要原因:具有静态网页的特性,又有最重要的“包含”功能。
  • 通过#echo可以获得Request.ServerVariables Collection。这个功能可以省却一部分javascript的编程量。
  • 通过#flastmod/#fsize可以即时显示某一个文件的最后修改时间和大小。不用fso就能实现。一些需要经常定时更新的叶面可以使用。
  • #exec用来执行一些程序调用。这玩意比较危险,可以通过修改注册表禁止。
2)、服务器设置
这里以win2003为例,如下图设置就好
使用SHTML更好的维护门户网站(转) - netcorner - netcorner的博客

3)、服务器端包括(SSI)的指令语法(shtml)

SSI:Server Side Includes

大多数 SSI 文件是常用与 IIS 以允许内容创作者包括的其他文件, 内一个文件允许轻松创建的脚本库或页面页眉和页脚内容。

SSI 文件, 像 Active Server Pages (ASP) 和 Internet 数据连接器 (IDC) 文件, 是通过文件扩展到预处理器动态链接库 (DLL) 脚本映射。 万一有 SSI, 处理程序是 Ssiinc.dll。 尽管也支持扩展的 .shtm 和 .shtml SSI 文件通常名称与 .stm 文件扩展名, 为。

通过使用特殊的预处理指令的 SSI 是使用 SSI 文档中。 这些指令由 SSI DLL 分析和处理。 所有指令都包含在 HTML 注释标记并且采取以下一般形式:
<!--#<DIRECTIVE> [<ADDITIONAL DATA>]-->
IIS 实现的 SSI 中支持下列指令:
? #config - 配置如何显示变量和命令。
? 一般语法对于 #config 指令是如下:<!-- #CONFIG <ERRMSG/TIMEFMT/SIZEFMT>="<format>" -->
以下是使用 #config 指令简单网页的示例:<html>
<body>
<!-- #CONFIG TIMEFMT="%m/%d/%y" -->
<p>Today's Date = <!--#ECHO VAR = "DATE_LOCAL" --></p>
<!-- #CONFIG TIMEFMT="%A, %B %d, %Y" -->
<p>Today's Date = <!--#ECHO VAR = "DATE_LOCAL" --></p>
</body>
</html>
#echo - 将各种通用网关接口 (CGI) 系统环境变量的值。? 一般语法对于 #echo 指令是如下:<!--#ECHO VAR = "<CGI_VARIABLE_NAME>"-->以下是使用 #echo 指令简单网页的示例:<html>
<body>
<p>Server Name = <!--#ECHO VAR = "SERVER_NAME"--></p>
<p>Date = <!--#ECHO VAR = "DATE_LOCAL" --></p>
<p>Page URL = <!--#ECHO VAR = "URL" --></p>
</body>
</html>
#exec 执行 CGI 或 Internet 服务器 API (ISAPI) 命令 - 脚本并将输出插入 HTML 文档。? 一般语法对于 #exec 指令是如下:<!-- #EXEC <CGI/CMD>="<command>" -->CMD 命令对于 #exec 指令 IIS 5.0 上默认禁用。 有关详细信息, 请参阅下列 Microsoft 知识库文章:233969 (http://support.microsoft.com/kb/233969/) SSIEnableCmdDirective 默认设置为 FALSE
以下是使用 #exec 指令简单网页的示例:<html>
<body>
<p>Root Directory of C:</p>
<pre><!--#EXEC CMD="cmd /c dir c:\ /b"--></pre>
</body>
</html>
#flastmod - 检索指定文件的上次修改时间。? 一般语法对于 #flastmod 指令是如下:<!--#FLASTMOD <FILE/VIRTUAL> = "filename.ext"-->

以下是使用 #flastmod 和 #config 指令简单网页的示例:<html>
<body>
<!-- #CONFIG TIMEFMT="%m/%d/%y" -->
<p>Modified Date = <!--#FLASTMOD FILE="filename.ext"--></p>
<!-- #CONFIG TIMEFMT="%B %d, %Y" -->
<p>Modified Date = <!--#FLASTMOD FILE="filename.ext"--></p>
</body>
</html>
#fsize - 检索指定文件的大小。
一般语法对于 #fsize 指令是如下:<!--#FSIZE <FILE/VIRTUAL> = "filename.ext"-->

以下是使用 #fsize 和 #config 指令简单网页的示例:<html>
<body>
<!-- #CONFIG SIZEFMT="BYTES" -->
<p>File Size = <!--#FSIZE FILE="filename.ext"--> bytes</p>
<!-- #CONFIG SIZEFMT="ABBREV" -->
<p>File Size = <!--#FSIZE FILE="filename.ext"--> KB</p>
</body>
</html>

# include - 包括内部另一个指定文件的内容。
# include 指令一般语法将如下所示:<!--#INCLUDE <FILE/VIRTUAL> = "filename.ext"-->

以下是使用 # include 指令简单网页的示例:<html>
<body>
<!--#INCLUDE FILE = "header.inc"-->
<p>Hello World!</p>
<!--#INCLUDE VIRTUAL = "/includes/footer.inc"-->
</body>
</html>

有关文件和虚拟语法详细信息通过使用文件或虚拟路径 SSI 指令使用文件路径可引用文件。 ? 文件元素用于是相对于当前文档的文件夹的文件。 以下示例在当前文件夹中包括一个文件:<!--#include file="myfile.txt"-->

虚拟元素表示路径是相对于基本的 Web 服务器文件夹。 以下示例包括文件: /scripts 虚拟文件夹中<!--#include virtual="/scripts/myfile.txt"-->
Server Side Includes

The WebCom WWW Server allows you to create documents which include other documents and various dynamically generated information, such as the current date, the file's last modification date, and the size or last modification of other files. Note: The "exec" command is not available, due to security considerations.

Special File Extension Necessary

Files utilizing includes must end in ".shtml". If they do not, the includes will be ignored.引用 参考其他有关使用 SSI IIS, 请单击下列文章编号以查看 Microsoft 知识库文章:
169996 (http://support.microsoft.com/kb/169996/) 要运行带有 #exec, ISAPIDLL 使用 CGI 语句
166491 (http://support.microsoft.com/kb/166491/) 安全批处理文件返回访问拒绝错误
195291 (http://support.microsoft.com/kb/195291/) 如何禁用 #exec 服务器端包含文件中
posted @ 2009-01-13 16:58  netcorner  阅读(217)  评论(0编辑  收藏  举报