求救!关于SSI的问题!

求救!关于SSI的问题!

小弟用apache2.0 + websphere5.1 搭建了一个站点,想用apache的SSI功能,但只有在*.shtml文件中生效了,在*.jsp和*.action中不起作用,不知道为什么?请各位大侠,不吝赐教!
弄了半天SSI,在CU有好多资料可以参考,当然 Apache manual 也是一种选择
以下摘自 Apache manual
并非所有文件中的SSI指令都会被解析,必须告诉Apache应该解析哪些文件。有两种方法使Apache解析带有特定后缀名的文件,比如:.shtml ,配置如下:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

该方法的缺点之一是,为了使文件具有.shtml后缀从而执行其中的指令,需要加入SSI指令的现有文件的名字,以及所有指向此页面的连接。

另一种方法是,使用XBitHack指令:

XBitHack on

XBitHack告诉Apache解析所有设置了执行位的文件中的SSI指令。这样,无需修改文件名,只要用chmod使文件变成可执行的,就可以对现有页面增加SSI指令。

chmod +x pagename.html

这里简要说明一点:偶然会有人向你推荐,无须用带.shtml的文件名,只要使Apache解析所有.html文件的SSI就可以了。那些人可能没听说过XBitHack 。要知道,这样做会使Apache在发送文件到客户端之前通读此文件,即使其中并没有任何SSI指令,从而对速度有很不利的影响,所以这并不是好办法。

当然,在Windows上,没有对应的执行位可以设置,所以对你的配置方法就有一些限制。
AddOutputFilter INCLUDES .shtml  .jsp .action .php


不过我最近加了 .php 后,使用中经常出现BUG

如BUG:http://www.phpx.com/happy/thread-131444-1-1.html


QUOTE:
原帖由 bs 于 2007-3-15 11:03 发表
AddOutputFilter INCLUDES .shtml  .jsp .action .php


不过我最近加了 .php 后,使用中经常出现BUG

如BUG:http://www.phpx.com/happy/thread-131444-1-1.html

这个我已经实现了,让php支持ssi(动态SSI,可以根据参数来ssi不同的文件),但是经过测试发现意义不大,php生成ssi标签再让ssi解析 很是多余。经过测试不如php直接包含速度快。
至于怎么实现的手册里很清楚了。
花了一天多时间搞定的
php -> ssi -> gzip
以及
php -> gzip
ssi -> gzip
自己多看手册,其实这是过滤器,过滤层数越多效率越低。
请问ashchen,你是如何实现的,我发现自己的实现方式有问题,有BUG,可以指教一下吗?


另外我觉得SSI的过滤是很快的,至少比起PHP自身的包含要快不少(SSI自带页面缓存),所以整体性能上不会有太大的起伏,因为现在做多重包含的功能,如一个a.shtml主文件包含其它.shtml文件,如果PHP不支付SSI,那么PHP程序包含a.shtml的时候将无法解析其它的.shtml。
ssi的嵌套包含似乎不能实现。过滤器的机制是顺序执行,不可能再回炉,只能一炉一炉的往下灌
php包含.shtml 这个功能似乎要修改php的包含功能,apache把过滤权交给php后不可能再收回来ssi一下再还给php,那样效率很成问题
你设计的方式不合理
我测试过不论高负载还是高并发,php都能应付自如,注意用readfile别用include

另外ssi的缺点是默认不能缓存,必须配合过期模块一起用,抓包一下就能看到shtml的请求全是200,而静态页面很多是304,现在我基本放弃ssi了。直接生成php静态文件,控制好过期,效率会大增
再问ashchen,你是如何解决 静态文件生成后 整站风格一致的问题??如果不用SSI


QUOTE:
原帖由 ashchen 于 2007-3-16 11:19 发表
ssi的嵌套包含似乎不能实现。过滤器的机制是顺序执行,不可能再回炉,只能一炉一炉的往下灌
php包含.shtml 这个功能似乎要修改php的包含功能,apache把过滤权交给php后不可能再收回来ssi一下再还给php,那样效率 ...

强..............
hehe
加上
AddOutputFilter INCLUDES  .php
ssi的嵌套包含就可以实现