*.shtml的文件是用SSI写的。通常做成静态是用输出缓冲函数ob_start();//先缓冲输出然后输出内容再用ob_get_contents()函数得到缓冲区的内容。如果你要做成静态的就把ob_get_contents()得到的内容写到文件里。

解决方案 »

  1.   

    那就要看你程序怎么写了。你可以在程序运行前检查对应的缓冲文件是否存在。如果存在用header函数直接连到缓冲文件。或者直接把缓冲文件读入输出。
      

  2.   

    php不行吧,只是有用zend的工具把它编译
      

  3.   

    你要的效果就是1楼的方法   固定好页面布局后,用ob_get_contents();获得所有数据库,将这些数据写入静态文件,同时将这个静态文件名追加到这条记录上,以后访问这记录的时候,检查是否有文件名就行了,有就用header直接输出到静态文件上,没有则生成。如果发现文件有错误,只需将内容更新的时同时将文件名字段更新为空就行了(呵呵,你还可以写段代码将所有文件名取出来,然后与目录核对,经过核对不对的文件就可以清理掉了~)
      

  4.   

    Here is a build-static-file example for files which have lots of query, u can change the name-method to what u need. For example, u can use 'id' to rename the html files.
    <?php
    if (!$showhtml) {
            $htmlfilename=substr(strrchr($PHP_SELF,'/'),1).".htm";
            
            //如静态页不存在或过期则生成之
            if(!file_exists($htmlfilename) or filemtime($htmlfilename)<time()-600 or filesize($htmlfilename)==0) {                 //读取动态页面
                    $fp = fopen("http://".$HTTP_HOST.$PHP_SELF."?showhtml=1", "r");
                    while ($buffer = fgets($fp, 4096)) {
                            $temp.=$buffer;
                    }
                    fclose($fp);                //生成静态页面
                    $fp = fopen($htmlfilename, "w");
                    fputs($fp,$temp);
                    fclose($fp);
            }
            else {
                    //如静态页存在则读取之
                    $fp = fopen($htmlfilename, "r");
                    while ($buffer = fgets($fp, 4096)) {
                            echo $buffer;
                    }
                    exit;
            }
    }
    ?>