shtml接近靜态頁,比html慢,但比asp快。靜中帶動,靜若處仔,動如脫褲。
一、為什麼要用shtml
首先是因為它很接近靜态頁,速度比asp\aspx頁面快得多;其次是它可以通過外鍊公用頁面,以實作“動态”的功能。最重要一個原因,我覺得就是,這是網站将動态頁面靜态化的一個很好的途徑。這個途徑的步驟如下:
1、使用者通路一個shtml頁面
2、
1)如果這個shtml頁面已經存在,系統傳回該頁面,十分自然
2)如果這個shtml頁面并不存在,系統會報404錯誤,找不到該頁面;這時IIS裡自定義404錯誤會轉向一個動态頁,比如pagenotfound.aspx。在這個動态頁裡,組織相關内容,生成該shtml頁面,然後再轉向新生成的shtml頁。
這樣就通過使用者的通路,逐漸将一些類似文章之類的頁面靜态化了。
二、設定IIS以支援shtml
在IIS裡配置。
IIS7
如果安裝IIS的時候沒有裝上的話,需要補裝上這一塊
打開控制台 - 程式與功能 - 打開或關閉windows功能 - internet資訊服務(就是IIS) ,在網際網路服務裡,勾上“伺服器端包含”,安裝即可
IIS6
三、如何連結公用檔案
如果shtml沒有外鍊頁面,那它跟html沒有多大差別;使用了外鍊檔案,就可以部分地實作動态的功能。比如,将導覽列做成公用的外鍊檔案,如果有所變化,那麼所有連結它的shtml檔案都會反映出來,而無須重新這些shtml頁面。
連結頁面的話,可以連結實體路徑檔案,也可以連結虛拟路徑的。我覺得虛拟路徑更常用些。
類似 <!--#include virtual="/template/css.htm"-->
示例:
shtml頁面部分代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>左直拳的馬桶</title>
<meta name="description" content="左直拳的工作部落格,技術心得" />
<meta name="keywords" content=".NET Web Java Android Sql Server" />
<link rel="shortcut icon" href="/img/favicon.ico" />
<!--#include virtual="/template/css.htm"-->
<script type="text/javascript" src="/js/MergerJsHandler.ashx?href=/js/jquery.js,/js/jquery.scrollLoading-min.js,/js/page.js,/js/_login.js,/public/_pub_show.js,/master/_base.js&v=20130114"></script>
</head>
<body>
<div id="mb_Navi">
<div id="mb_divAdd" style="float:right;margin-right:10px;font-size:12px;">
<a href="/sc.aspx">+添加</a>
</div>
<div>
<!--#include virtual="/template/navi.htm"-->
</div>
</div>
被連結頁 /template/css.htm 代碼:
<style type="text/css">
#divRelation{vertical-align:top;padding-top:5px; padding-left:5px; line-height:23px; font-size:12px;}
#divRelation li { list-style-position:inside }
#divPannel table{width:100%;font-size:12px;empty-cells:show;}
#divPannel td{line-height:30px;text-align:center;}
#divPannel img{vertical-align:text-bottom;}
#divPannel span{margin-right:2px;}
#divPannel a:link, #divPannel a:active, #divPannel a:visited {color:#777;text-decoration:underline;}
#divPannel a:hover {color:red;text-decoration:underline;}
#divPannel2 table{width:100%;font-size:12px;border:none;}
#divPannel2 td{line-height:20px;text-align:center;}
#divPannel2 img{vertical-align:text-bottom;}
#divPannel2 a:link, #divPannel2 a:active, #divPannel2 a:visited {color:#777;text-decoration:none;}
#divPannel2 a:hover {color:red;text-decoration:underline;}
.bottom{vertical-align:bottom;}
.txtad{margin:15px auto;}
#st_btn {background-color:#0096E3;font-weight:bold;width:50px;text-align:center;}
#st_btn a:link, #st_btn a:active, #st_btn a:visited {color:#fff;text-decoration:none;}
#st_btn a:hover {color:#ff0;text-decoration:underline;}
#st_txt {border:1px solid #9CBBE0;width:160px;height:25px;padding-left:5px;}
</style>
<link href="/css/default.css?ver=20130113" rel="stylesheet" type="text/css"/>
【注意事項】
如果頁面編碼為utf-8,則需要
1、shtml或模闆頁需要儲存為 “utf-8 帶簽名”