静态页面,只要把目录地址保存在数据库里调用,但是有些动态的信息,比如登录信息,文章点击数等需要做动态的改变,这种情况主要通过js和重新生成静态页面来显示.
这里给出两种生成静态页面的方法:
一、通过ob函数来控制浏览器输出。
ob_start();
include template(‘index’);
$data = ob_get_contents();
ob_clean();
file_put_contents($filename, $data);
二、通过预先得知这个页面的地址来通过网页抓取。
function create_html($filepath, $phpfile, $page = 1){
global $siteurl;
$filepath = ROOT.$filepath;
$htmlpath = substr($filepath,0,strrpos($filepath,”/”));
if(!is_dir($htmlpath))makeDirs($htmlpath);
$contents = dfile_get_contents($siteurl.$phpfile);
dfile_put_contents($filepath, $contents);
}
伪静态的优点主要在于灵活,相对于静态文件就是不需要额外的脚本来生成或控制静态页面的内容,不占用服务器空间。由于是服务器内部解析的地址,所以内容是实时更新的,也不存在文件管理和硬件问题,维护比较方便。在服务器级URL Rewrite重写技术并不影响页面的执行速度。但是URL Rewrite的门槛比较高,国内虚拟主机大多不支持,而且虚拟主机是目录级的url Rewrite,通过遍历目录读物URL转发规则的方式将大大降低页面的执行速度。
静态页面的好处在于少了动态解析过程,提高了页面的访问速度和稳定性,使得优化效果非常明显。对数据库和服务器的软件资源耗费少。但是占用了服务器的硬件资源,对于大型网站而言,这种方法将带来不可忽视的后继问题:
由于生成的文件数量较多,存储需要考虑文件、文件夹的数量问题和磁盘空间容量的问题,需要大量的服务器设备;程序将频繁地读写站点中较大区域内容,考虑磁盘损伤问题及其带来的事故防范与恢复,硬件损耗要更新、站点备份要到位;页面维护的复杂性和大工作量,及带来的页面维护及时性问题,需要一整套站点更新制度和专业的站点维护人员;
对于第三种方式,php业界流行的框架比如zend,thinkphp就应用的比较多,归根结底,他们在某些条件下也缺少不了.htaccess这个文件,因为他们的目的都是想要把所有的连接(除过图片,js,css)都指向index.php这个文件。这里用到的主要技术之一便是pathinfo,关于pathinfo的原理,这里就不再做过多讨论了。这种技术和用.htaccess技术的区别就在于没有使用.htaccess文件,好像说的是废话,不过还是需要注意的。
所以综合上诉原因,个人认为:
对于一般企业网站,个人网站,这些网站信息一旦发布就很少更改,网站信息量不多的情况下,而且一般使用的是虚拟主机,可以选择生成静态页的方式。
对于大型网站,信息量巨大,具有独立服务器,可采用URL Rewrite 的方式。
对于一些中型网站,使用虚拟主机的就采用生成静态页的方式,有条件购置服务器的可视具体网站类型而定,若网站交互性较强,局部更新内容比较多的话,可以采用Rewrite,若页面内容比较固定的话,使用静态页生成技术效果就更佳。