ssi静态包含技术总结

先摘抄网上常见的关于SSI的介绍。

SSI的工作原理将内容发送到浏览器之前,可以使用“服务器端包含(SSI)”指令将文本、图形或应用程序信息包含到网页中。
SSI技术的功用:可以有效的将HTML网页和CGI脚本逻辑上分开,也可以将重复的HTML元素抽象和独立出来,减轻维护负担。

通过上面的介绍,我们并不能知道SSI到底是什么,是用来做什么的。


我用浅显的语言总结一下:
假如我们要做一个需要生成静态页面的资讯网站,有大量的资讯,并且数据量一直往上升。
资讯内容页的右侧有2个动态栏目:推荐阅读和阅读排行。
面临的问题是,这两个栏目更新频率较大,当每次更新的时候,所有的资讯内容页面都要重新生成一次。这显然是不现实的。(时间漫长,消耗服务器资源)
而SSI静态包含技术就能解决这样的问题。我们不需要重新生成静态页面,就能完成动态内容的更新。
总而言之,就是SSI能让静态HTML页面包含动态内容。
网络上有很多文章介绍,各大门户都采用了这种技术。从他们常用的.shtml后缀能窥一斑。

那我们如何使用这种技术?很简单,我们只要在服务器端做好相应的配置就能使用,apache,iis,nginx都能支持。其实,就是更改web服务器软件的配置,开启相应的模块。

使用:(针对win32版apache)
1:在httpd.conf中找LoadModule include_module modules/mod_include.so,如果是注释状态,就去掉#。
如果没有,就将这段复制上去。
2:使.shtml/.html扩展名的文件启用ssi,去掉下面的注释。
#AddType text/html .html
#AddOutputFilter INCLUDES .html
要想支持.shtml后缀,把.html改成.shtml即可。
也可以直接在.html加上.shtml(记得空格分隔),这样ssi同时支持两种后缀。
3:找到主机DOCUMENT_ROOT目录配置下 Options Indexes FollowSymLinks 修改为: Options Indexes FollowSymLinks Includes
存盘,重启apache。

这样,在静态页面中的<!–#include file=”footer.html” –><!–#include virtual=”my.php” –>会将包含的内容载入进来。

例:
ssi.html
<!–#include file=”header.php” –>
我是静态ssi包含技术
<!–#include virtual=”../../my.php” –>
<!–#include virtual=”/footer.html” –>
建立文件header.php my.php footer.html,测试在静态的ssi.html页面中,其他文件的内容是如何包含进来的。

注意file和virual的区别:
include元素能按file属性或virtual属性判断应该包含的文件。
file属性是一个相对于当前目录的文件路径,即不能是一个绝对路径(以”/”开头)或包含”../”的路径。
virtual属性更有用,它是一个相对于被提供的文档的URL ,可以以”/”开头,但必须与被提供的文档位于同一服务器上。

在apache手册里,对于ssi有更详细的介绍。但是掌握上面的东西,足够解决静态页面动态内容的问题。
生成静态页面耗费服务器资源,耗费时间,某个页面生成可能失败。如何以一个更好的策略或者机制,生成静态页面?特别是页面特别多的时候。这可能是比较麻烦的问题。

本文链接:http://www.ling01.com/post/ssi.html
如非特殊说明,本站文章均由作者Cookie Chen原创,转载请注明作者及来源!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章