网站静态化之rewrite,pathinfo和静态页面分析

作者:不要清闲   2008-04-27 09:55:38   点击:656   评论:0

随着SEO的普及,静态化便成为网站开发的必要技术之一。网站静态化通常有三种方法可以实现,一种是伪静态,一种是实实在在的静态页面,最后一种是pathinfo技术。

 

伪静态下,如果是apache服务器,是通过.htaccess文件来操作。如果是IIS服务器,则是通过httpd.inirewrite.dll来实现。伪静态处理的关键技术是配置文件的规则如何得到有效的控制,并在html页面里对应起来,一旦规则改变,则html页面里的链接也需要根据规则动态的改变。后台设置规则,并且写入.htaccess文件,同时根据规则生成php语言的规则,那么在php程序里根据规则显示页面的不同内容。这种方式的难点在于对htaccess文件的彻透理解和应用以及php正则表达式的灵活运用上。

 

通过这种方式转化的静态页面的路径有两种表现形式,一种是非常规则的,比如一篇文章,article.php?artid=12,则转化成静态页面可能就是这样:article-do-view-artid-12.html。因为每个页面必须要有动作和对象,这样便于统一管理,也可以表示成这种形式:article/do/view/artid/12.html等等。这种形式只要在htaccess文件中写一句话便可以控制全局,那就是RewriteRule ^([^-]*)-(.*)$ $1.php?$2 。这样,整个规则就只有一个规则,程序里要做的只有对$2号的字符串进行处理,相对简单。第二中形式就相对人性化点,美观点,我们要把连接形式转化为article/12.html 或者 article/hello-world.html 更或者 article/hello-world_page2.html ,这种方式要对每个连接都作处理,如果只给出这种规则,计算机是不能理解的,除非给成 article/(.*)(_page[0-9])\.html 这种规则,那么在处理上就有相当大的难度,因为要把rewrite的规则解析为php的正则并进行替换,还有这些规则必须由熟悉rewritephp的程序员来写,不利于推广。

 

静态页面,只要把目录地址保存在数据库里调用,但是有些动态的信息,比如登录信息,文章点击数等需要做动态的改变,这种情况主要通过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这个文件,因为他们的目的都是想要把所有的连接(除过图片,jscss)都指向index.php这个文件。这里用到的主要技术之一便是pathinfo,关于pathinfo的原理,这里就不再做过多讨论了。这种技术和用.htaccess技术的区别就在于没有使用.htaccess文件,好像说的是废话,不过还是需要注意的。

所以综合上诉原因,个人认为:
    对于一般企业网站,个人网站,这些网站信息一旦发布就很少更改,网站信息量不多的情况下,而且一般使用的是虚拟主机,可以选择生成静态页的方式。

对于大型网站,信息量巨大,具有独立服务器,可采用URL Rewrite 的方式。

对于一些中型网站,使用虚拟主机的就采用生成静态页的方式,有条件购置服务器的可视具体网站类型而定,若网站交互性较强,局部更新内容比较多的话,可以采用Rewrite,若页面内容比较固定的话,使用静态页生成技术效果就更佳。

上一篇文章:  旅游业网站建设方案
下一篇文章:  无
关于我们 | 代理合作 | 解决方案 | 常见问题 | 新闻资讯 | SEO博客
西安鸿亿网络科技有限公司
2007-2008 Inc.西安鸿亿网络科技有限公司.版权所有 陕ICP备07011159号
联系电话: 029-88726470   13363990305   (6 * 8 小时)
联系电话: 029-88945654   15802957768   (7 * 24 小时)
传真: 029-88726470   地址: 西安市高新区电子二路36号14F-1 企业电视台名扬网视