PHP生成静态页面的两种方法

  1. 管理后台添加记录时,直接生成目标html页面,并且前台调用连接直接指向生成的html页面。这种方法程优点是程序效率最高。

   服务器负荷轻,不过由于生成的是纯静态页面,一旦页面样式(模版及css=theme)上有所改动就必须重新生成所有的内容页。

   所以实际使用中应用一般不是太多。更多的是使用js,ssi,xml/xsl等客户端手段,生成的静态文件中仅保存数据,不涉及样式,

   这样能达到速度和维护性的平衡,不过相对前后台程序要复杂些(应用这种方法时,由于内容为纯静态,可以搭配单独编译的纯静态的apache使用。。效率和资源占用上比包含动态内容支持的要更佳)

   ====
   补充:

    a. 上面说的改动样式,要重新生成所有的内容页,可以通过:
    >>>>在可以在每个生成的页面内嵌入一个<script src=XXX.php?id=xxx&template=red></script>来判断是否需要重新生成该页面。

    >>>>apache 的ErrorDocument404 功能, 但是这里前台链接是指向html的,如果该html不存在, 会通过apache的文件不存在重定向到404处理程序的功能重新生成html

       (注:httpd.conf加 ErrorDocument 404 /errprocess.php 指令), 利用这个功能可以解决修改网站样式的时候,要更新所有生成的html文件的问题,

        将整个static文件夹删除即可。

    b. 通过嵌入<script></script>js来调用php的方式,更改许多需要变化的地方(如点击率之类的)

  2. 前台访问链接指向php程序,php程序首先检查是否存在相应的静态文件。如果静态文件不存在。则生成并重定向至此文件,否则直接重定向。

   这种方法实际使用中一般和apache的url_rewrite功能一起使用。将php的文件地址重显示为html的形式,有利于搜索引擎的检索。

   这种方法在效率上略有损失,不过程序结构简单,便于调整,在访问量不是很大时使用很合适。
   
 注意事项: 

   所有生成的html文件都集中放到一个文件夹, 其中还应该注意生成文件如果很多的话(如论坛),访问其中一个htm文件,将会变得很慢,

   那么最好通过

   >>>>按日期来分隔文件夹,如static/2004/11/18/0001.htm
   >>>>对帖子id根据数据库中字段长度做str_pad:比方说id为123456,数据库中为int(11),则id处理为00000123456,考虑到linux下一般同一下文件到达四位数会有性能影响,对其做切割,最后路径为static/00/000/123/456.html