浅谈.html,.htm,.shtml,.shtm的区别与联系
author:一佰互联 2019-04-22   click:191
大家都知道,我们每天浏览的网页或者网站或者web页都有自己的后缀名,而不同的后缀名则对应着不同的文件格式和不同的规定、协议、用法,其中最常见的后缀名是.html和.htm,还有常见的.shtml和.shtm格式。我们大多数开发者只知道他们区别不大,而且可以任意使用,殊不知这里面还是有一些联系的,笔者浅浅总结了下,特与大家分享。

首先,介绍下.html和.html
html是当今网页文件的一种最基本的,也是使用最广泛的保存格式,是一种超文本标记语言,是WWW的描述语言,与PHP、jsp、asp之类的动态网页技术所保存的文本格式不同,页面中没有嵌入任何服务器端要执行的语句,是一种静态的页面格式,一般的浏览器都能够直接解释并显示。
关于htm,其实与html并没有本质意义上的区别,只是为了满足DOS的8+3(文件名不能超过8个字符,扩展名不能超过3个字符)的文件名名规范。因为一些老的系统(32位)不能识别4位文件扩展名,所以某些服务器要求.html的最后一个l省略。浏览器能自动识别和打开这些文件,但编写这些网页网址的时候必须是对应的,也就是说index.html和index.htm是两个不同的文件,对应着不同的地址。

其次,介绍下.shtml和.shtm
关于shtml,是一种基于SSI技术支持的文件,也就是Server Side Include--SSI服务器段的包含指令,一些Web Server如果有SSI功能的话就会对shtml文件进行特殊的招待,服务器首先会先扫描一次shtml文件看下有没有特殊的SSI指令的存在,如果有的话就按照Web Server的设定规则解释SSI指令,然后解释完后就会跟普通的HTML被浏览器解释并显示。
关于shtm,shtm与shtml的关系和htm与html的关系大致相似,这里不再赘述...

最后,html或htm与shtml或shtm的关系
html或者htm是一种静态的页面格式,也就是说不需要服务器解析其中的脚本,或者说里面没有服务器端执行的脚本,而shtml或者shtm由于是基于SSI技术,当有服务器端执行脚本时被当作一种动态语言来看待,就如PHP、JSP或者ASP一样。
当shtml或者shtm中不包含服务器端可执行脚本时其作用和html或者htm是一样的。

SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml是服务器动态产成的html.
虽然两者都是超文本格式,但shtml是一种用于SSI技术的文件。 也就是Server Side Include--SSI 服务器端包含指令。 如果Web Server有SSI功能的话(大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令)。
会对shtml文件特殊招待。 先扫一次shtml文件看没有特殊的SSI指令现在。
有就按Web Server设定规则解释SSI指令。 解释完后跟一般html一起掉去客户端。

shtml
使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。

SSI工作原理:
将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI 文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml

Web 服务器在处理网页的同时处理 SSI 指令。当 Web 服务器遇到 SSI 指令时,直接将包含文件的内容插入 HTML 网页。如果“包含文件”中包含 SSI 指令,则同时插入此文件。除了用于包含文件的基本指令之外,还可以使用 SSI 指令插入文件的相关信息(如文件的大小)或者运行应用程序或 shell 命令。

网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。

所以,利用SHTML格式的页面目的和 ASP 差不多,但是因为是 API 所以运转速度更快,效率更高,比ASP快,比HTML慢,但由于可以使用服务器端包含,因此使页面更新容易(特别是批量更新banner,版权等),想象一下吧,你有一段 HTML,要在中间穿插一些特殊的服务端脚本,比如插入其他 HTML 段落,你选择 ASP 来完成这个任务,但是如果任务更繁重,需要更多的时间,比如 5 s,这个时候你不用 ASP 而用 SHTML,或许处理时间就只用 4 s 了.