很多朋友剛開始接觸網頁制作,發現這麼多擴張名,其實htm與html都是一樣的,shtm與shtml也是一樣的,注意,為了網站優化建議使用一樣的後綴名,基本上對於訪問者來說html與htm可以是兩個不同的內容。
.htm VS .html 首先來看 .htm 和 .html 文件的區別。答案居然是:它們是相同的。
事實上,這只是個人喜好問題,保持統一的後綴名即可。習慣上,windows 通常會用 .htm 的後綴名,而 linux(unix) 會用 .html 後綴(在 linux 中,如果打開 .htm 的文件,會直接展示源碼)。這是因為很久以前,操作系統(DOS)的平台是 window 3.x.x,系統對於文件有個 8.3 約束(8.3 naming convention),即文件名只能是 8 個字符,後綴只能是 3 個字符,所以當時顯然無法使用 .html 後綴。而現在,這些問題都已經不復存在了。(個人感覺 .html 更正規一點,一些人認為使用 .htm 是回到了 dos 時代)
還有個問題是服務端的,如果服務端某文件夾下同時有 index.html 和 index.htm 文件,URL 省略了後面的文件名(如 http://www.domain.dom/dirname/),那麼顯然一個文件會優先於另一文件被讀取(先解析 index.html)。事實上,我們一般不會在同一個文件夾下保存兩個 index 文件。
.html VS .shtml 接著來說說 .html 和 .shtml 文件的區別,簡單說 .shtml 文件就是 html 文件加個 ssi。那麼,ssi 又是什麼鬼?其實這玩意兒之前已經接觸過,在 Apache下開啟SSI配置使html支持include包含 一文中。
SSI 是 Server Side Include 的首字母縮略詞。包含有嵌入式服務器方包含命令的 HTML 文本。在被傳送給浏覽器之前,服務器會對 SHTML 文檔進行完全地讀取、分析以及修改。SSI 就是在 HTML 文件中,可以通過注釋行調用的命令或指針。SSI 具有強大的功能,只要使用一條簡單的 SSI 命令就可以實現整個網站的內容更新,時間和日期的動態顯示,以及執行 shell 和 CGI 腳本程序等復雜的功能。 網站維護常常碰到的一個問題是,網站的結構已經固定,卻為了更新一點內容而不得不重做一大批網頁。SSI 提供了一種簡單、有效的方法來解決這一問題,它將一個網站的基本結構放在幾個簡單的 HTML 文件中(模板),以後我們要做的只是將文本傳到服務器,讓程序按照模板自動生成網頁,從而使管理大型網站變得容易。
應用它可以把網站中一些公共區域做成獨立的頁面,然後利用此技術嵌入到其它需要此區域內容的頁面中去。
機制: SSI 機制是動態包含,而不是靜態生成,是由 web服務器比如 apache 在收到用戶的請求時,如果解析到其中有 SSI 包含指令時,自動取出被包含的頁面嵌入到被請求的頁面中一起當做一個整體的頁面發送給用戶,對用戶來說根本不知道服務器做了啥,只是知道得到一個完整的頁面。
由 SSI 工作機制我們知道,包含動作是在每次用戶請求頁面時發生,所以如果被包含的頁面內容有變化,也能實時的反應出來,正因為如此,就很容易用來實現靜態頁面的動態嵌入,我們就可以用來實現網站中全站公共區域,或是出現很多的重復區域內容發布成一個獨立靜態頁面,然後在需要的地方用SSI指令包含進去,比如像全站的頭部和尾部,全站最新新聞等等。
事實上,.html 的文件同樣可以開啟 SSI,只需在 apache 裡進行相應的配置,一旦開啟 SSI,.html 文件和 .shtml 文件可以一樣對待了。
AddType text/html .shtml .html
AddOutputFilter INCLUDES .shtml .html
具體配置方法可以參考 Apache下開啟SSI配置使html支持include包含
至於 .shtm 文件,window7 apache 下直接在浏覽器中打開了源碼。