什么是SSI ?
SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
至于什么时候应当用SSI ,而什么时候应当用某些程序生成整个页面,取决于页面中有多少内容是静态的,又有多少内容需要在每次页面被提供时重新计算。SSI是一种增加小段动态信息的好方法,比如当前时间。如果你的页面大部分内容是在被提供时动态生成的,那就要另找方案了.
以上是apache 官方的解释,而在apache 里面的实现就是通过mod_include模块实现.要使服务器允许SSI,必须在httpd.conf或.htaccess文件中有如下配置:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml ####声明那些文件后缀使用ssi
Options +Includes ####启用ssi指令
首先我们分析下ssi原理和设置:
1:全文式的搜索文件内容来寻找源码的Include标签,消耗大量cpu资源
2:而大量的html文件是不经常更改的,所以无法随意的修改文件后缀(shml),尽管我可以更改如下:
AddType text/html .shtml html
AddOutputFilter INCLUDES .shtml html
但是我其他没有include标签的html似乎很无辜!
3:通过设置"XBitHack on“似乎能解决一些问题,但也仅仅是杯水车薪。
当然ssi对系统性能的影响完全大于我们对他的需求
今天的web不是几年前的web那么简单,不是几个简单的html就能搞定的事,大量内容的发布似拖动了整个页面的更新.往往这些更新只是局部的,这样的开销开销似乎很不合算.SSi就是满足了我们这点.
那有没有更简单的方式实现服务器端包含呢?
答案是有的!
今天我们介绍通过apache的第三方模块实现对现有HTML文档增加动态内容的方法
mod_layout
mod_layout(http://tangent.org/362/mod_layout.html)是一个Apache模块,它支持html网页内容自动插入来自其他URL或者文件输出的内容来子作为指定网页的页眉和页脚。目前支持mod_perl,PHP 和 Apache JServ.和几乎任何类型的处理程序。
据我了解sina就是使用mod_layout!
[root@node2 extra]# curl --head www.sina.com.cn
HTTP/1.0 200 OK
Date: Thu, 17 Jun 2010 08:22:02 GMT
Server: Apache/2.0.54 (Unix)
Last-Modified: Thu, 17 Jun 2010 08:21:00 GMT
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markIII.remix
Cache-Control: max-age=60
Expires: Thu, 17 Jun 2010 08:23:02 GMT
Vary: Accept-Encoding
X-UA-Compatible: IE=EmulateIE7
Content-Type: text/html
Age: 48
Content-Length: 555586
X-Cache: HIT from sh201-20.sina.com.cn
Connection: close
[root@node2 extra]# curl --head http://sh.house.sina.com.cn/
HTTP/1.1 200 OK
Date: Thu, 17 Jun 2010 08:29:36 GMT
Server: Apache/2.2.6 (Unix)
Last-Modified: Thu, 17 Jun 2010 08:18:35 GMT
Accept-Ranges: bytes
Cache-Control: max-age=1800
Expires: Thu, 17 Jun 2010 08:59:36 GMT
X-Powered-By: ModLayout/5.1
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
INSTALL步骤如下:
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Server version: Apache/2.2.11 (Unix)
我的apache安装在/opt/app/apache(根据自己的编译环境选择)
软件下载:
wget http://fetus.k-hsu.net/document/webmaster/diary2/binary/20060315_modlayout.tar.gz
apache的安装省略!
出现以上,证明安装没有问题
确保http.conf 配置文件里面有这行:
LoadModule layout_module modules/liblayout.so
#############################################################
建立一个虚拟主机测试:
###############################################################
[root@node2 mod_layout-4.0.1a] echo "header" > /var/www/html/header.html
[root@node2 mod_layout-4.0.1a] echo "footer" > /var/www/html/footer.html
完成!
SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
至于什么时候应当用SSI ,而什么时候应当用某些程序生成整个页面,取决于页面中有多少内容是静态的,又有多少内容需要在每次页面被提供时重新计算。SSI是一种增加小段动态信息的好方法,比如当前时间。如果你的页面大部分内容是在被提供时动态生成的,那就要另找方案了.
以上是apache 官方的解释,而在apache 里面的实现就是通过mod_include模块实现.要使服务器允许SSI,必须在httpd.conf或.htaccess文件中有如下配置:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml ####声明那些文件后缀使用ssi
Options +Includes ####启用ssi指令
首先我们分析下ssi原理和设置:
1:全文式的搜索文件内容来寻找源码的Include标签,消耗大量cpu资源
2:而大量的html文件是不经常更改的,所以无法随意的修改文件后缀(shml),尽管我可以更改如下:
AddType text/html .shtml html
AddOutputFilter INCLUDES .shtml html
但是我其他没有include标签的html似乎很无辜!
3:通过设置"XBitHack on“似乎能解决一些问题,但也仅仅是杯水车薪。
当然ssi对系统性能的影响完全大于我们对他的需求
今天的web不是几年前的web那么简单,不是几个简单的html就能搞定的事,大量内容的发布似拖动了整个页面的更新.往往这些更新只是局部的,这样的开销开销似乎很不合算.SSi就是满足了我们这点.
那有没有更简单的方式实现服务器端包含呢?
答案是有的!
今天我们介绍通过apache的第三方模块实现对现有HTML文档增加动态内容的方法
mod_layout
mod_layout(http://tangent.org/362/mod_layout.html)是一个Apache模块,它支持html网页内容自动插入来自其他URL或者文件输出的内容来子作为指定网页的页眉和页脚。目前支持mod_perl,PHP 和 Apache JServ.和几乎任何类型的处理程序。
据我了解sina就是使用mod_layout!
[root@node2 extra]# curl --head www.sina.com.cn
HTTP/1.0 200 OK
Date: Thu, 17 Jun 2010 08:22:02 GMT
Server: Apache/2.0.54 (Unix)
Last-Modified: Thu, 17 Jun 2010 08:21:00 GMT
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markIII.remix
Cache-Control: max-age=60
Expires: Thu, 17 Jun 2010 08:23:02 GMT
Vary: Accept-Encoding
X-UA-Compatible: IE=EmulateIE7
Content-Type: text/html
Age: 48
Content-Length: 555586
X-Cache: HIT from sh201-20.sina.com.cn
Connection: close
[root@node2 extra]# curl --head http://sh.house.sina.com.cn/
HTTP/1.1 200 OK
Date: Thu, 17 Jun 2010 08:29:36 GMT
Server: Apache/2.2.6 (Unix)
Last-Modified: Thu, 17 Jun 2010 08:18:35 GMT
Accept-Ranges: bytes
Cache-Control: max-age=1800
Expires: Thu, 17 Jun 2010 08:59:36 GMT
X-Powered-By: ModLayout/5.1
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
INSTALL步骤如下:
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Server version: Apache/2.2.11 (Unix)
我的apache安装在/opt/app/apache(根据自己的编译环境选择)
软件下载:
wget http://fetus.k-hsu.net/document/webmaster/diary2/binary/20060315_modlayout.tar.gz
apache的安装省略!
引用
[root@node2 httpd-2.2.14]# tar -zxvf 20060315_modlayout.tar.gz
mod_layout/
mod_layout/mod_layout-4.0.1a/
mod_layout/mod_layout-4.0.1a/Makefile
.................
.................
mod_layout/mod_layout-4.0.1a/ChangeLog
mod_layout/mod_layout-4.0.1a/modules.mk
mod_layout/liblayout.so
[root@node2 httpd-2.2.14]# cd mod_layout/
[root@node2 mod_layout]# ls
liblayout.so mod_layout-4.0.1a
[root@node2 mod_layout]# cd mod_layout-4.0.1a/
[root@node2 mod_layout-4.0.1a]# ls
ChangeLog layout.c layout.o Makefile mod_layout.h mod_layout.lo modules.mk proto.h utility.la utility.slo
directives.h layout.la layout.slo mod_layout.c mod_layout.h.orig mod_layout.o patches README utility.lo version.h
INSTALL layout.lo liblayout.la mod_layout.c.orig mod_layout.la mod_layout.slo protobuild.pl utility.c utility.o
[root@node2 mod_layout-4.0.1a]# vi Makefile
修改完成后保存退出
[root@node2 mod_layout-4.0.1a]# make
/opt/app/apache2/bin/apxs -c mod_layout.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o mod_layout.lo mod_layout.c && touch mod_layout.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o mod_layout.la -rpath //opt/app/apache2/modules -module -avoid-version mod_layout.lo
/opt/app/apache2/bin/apxs -c utility.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o utility.lo utility.c && touch utility.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o utility.la -rpath //opt/app/apache2/modules -module -avoid-version utility.lo
/opt/app/apache2/bin/apxs -c layout.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o layout.lo layout.c && touch layout.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o layout.la -rpath //opt/app/apache2/modules -module -avoid-version layout.lo
/opt/app/apache2/bin/apxs -o liblayout.la -c mod_layout.lo utility.lo layout.lo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o liblayout.la -rpath //opt/app/apache2/modules -module -avoid-version mod_layout.lo utility.lo layout.lo
#/opt/app/apache2/bin/apxs -c -o liblayout mod_layout.lo utility.lo layout.lo
#/opt/app/apache2/bin/apxs -i -a mod_layout.la
[root@node2 mod_layout-4.0.1a]# make install
make[1]: Entering directory `/opt/app/mod_layout/mod_layout-4.0.1a'
//opt/app/apache2/build/libtool --silent --mode=install cp mod_layout.la //opt/app/apache2/modules/
make[1]: Leaving directory `/opt/app/mod_layout/mod_layout-4.0.1a'
..............
...........
.......
chmod 755 //opt/app/apache2/modules/liblayout.so
+--------------------------------------------------------+
| All done. |
| |
| You will need to add the directive: |
| LoadModule layout_module modules/liblayout.so |
| |
| So that you can begin to use mod_layout. |
| |
| Thanks for installing mod_layout. |
+--------------------------------------------------------+
mod_layout/
mod_layout/mod_layout-4.0.1a/
mod_layout/mod_layout-4.0.1a/Makefile
.................
.................
mod_layout/mod_layout-4.0.1a/ChangeLog
mod_layout/mod_layout-4.0.1a/modules.mk
mod_layout/liblayout.so
[root@node2 httpd-2.2.14]# cd mod_layout/
[root@node2 mod_layout]# ls
liblayout.so mod_layout-4.0.1a
[root@node2 mod_layout]# cd mod_layout-4.0.1a/
[root@node2 mod_layout-4.0.1a]# ls
ChangeLog layout.c layout.o Makefile mod_layout.h mod_layout.lo modules.mk proto.h utility.la utility.slo
directives.h layout.la layout.slo mod_layout.c mod_layout.h.orig mod_layout.o patches README utility.lo version.h
INSTALL layout.lo liblayout.la mod_layout.c.orig mod_layout.la mod_layout.slo protobuild.pl utility.c utility.o
[root@node2 mod_layout-4.0.1a]# vi Makefile
修改完成后保存退出
[root@node2 mod_layout-4.0.1a]# make
/opt/app/apache2/bin/apxs -c mod_layout.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o mod_layout.lo mod_layout.c && touch mod_layout.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o mod_layout.la -rpath //opt/app/apache2/modules -module -avoid-version mod_layout.lo
/opt/app/apache2/bin/apxs -c utility.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o utility.lo utility.c && touch utility.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o utility.la -rpath //opt/app/apache2/modules -module -avoid-version utility.lo
/opt/app/apache2/bin/apxs -c layout.c
//opt/app/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I//opt/app/apache2/include -I//opt/app/apache2/include -I//opt/app/apache2/include -c -o layout.lo layout.c && touch layout.slo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o layout.la -rpath //opt/app/apache2/modules -module -avoid-version layout.lo
/opt/app/apache2/bin/apxs -o liblayout.la -c mod_layout.lo utility.lo layout.lo
//opt/app/apache2/build/libtool --silent --mode=link gcc -o liblayout.la -rpath //opt/app/apache2/modules -module -avoid-version mod_layout.lo utility.lo layout.lo
#/opt/app/apache2/bin/apxs -c -o liblayout mod_layout.lo utility.lo layout.lo
#/opt/app/apache2/bin/apxs -i -a mod_layout.la
[root@node2 mod_layout-4.0.1a]# make install
make[1]: Entering directory `/opt/app/mod_layout/mod_layout-4.0.1a'
//opt/app/apache2/build/libtool --silent --mode=install cp mod_layout.la //opt/app/apache2/modules/
make[1]: Leaving directory `/opt/app/mod_layout/mod_layout-4.0.1a'
..............
...........
.......
chmod 755 //opt/app/apache2/modules/liblayout.so
+--------------------------------------------------------+
| All done. |
| |
| You will need to add the directive: |
| LoadModule layout_module modules/liblayout.so |
| |
| So that you can begin to use mod_layout. |
| |
| Thanks for installing mod_layout. |
+--------------------------------------------------------+
出现以上,证明安装没有问题
确保http.conf 配置文件里面有这行:
LoadModule layout_module modules/liblayout.so
#############################################################
建立一个虚拟主机测试:
###############################################################
[root@node2 mod_layout-4.0.1a] echo "header" > /var/www/html/header.html
[root@node2 mod_layout-4.0.1a] echo "footer" > /var/www/html/footer.html
完成!
squid 3.0 文件数导致当机
mysql 之 prompt 解决登录环境设置


2010/06/17 17:07 | by
