网站静态化

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

伪静态 下, 如果是apache服务器,是通过.htaccess文件来操作。如果是IIS服务器,则是通过httpd.ini和rewrite.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文件中写一句话便可以控制全局,那就是Rewrite Rule ^([^-]*)-(.*)$ $1.php?$2 。这样,整个规则就只有一个规则,程序里要做的只有对$2号的字符串进行处理,相对简单。第二中形式就相对人性化点,美观点,我们要把连接形式转化为article/12.html 或者 article/hello-world.html 更或者 article/hello-world_page2.html ,这种方式要对每个连接都作处理,如果只给出这种规则,计算机是不能理解的,除非给成 article/(.*)(_page[0-9])\.html 这种规则,那么在处理上就有相当大的难度,因为要把rewrite的规则解析为php的正则并进行替换,还有这些规则必须由熟悉rewrite和php的程序员来写,不利于推广。 
静态页面,只要把目录地址保存在数据库里调用,但是有些动态的信息,比如登录信息,文章点击数等需要做动态的改变,这种情况主要通过js和重新生成静态页面来显示.这里给出两种生成静态页面的方法:
一、通过ob函数来控制浏览器输出。

Java代码  

  1. ob_start();   
  2. include template('index');   
  3. $data = ob_get_contents();   
  4. ob_clean();   
  5. file_put_contents($filename, $data);   

二、通过预先得知这个页面的地址来通过网页抓取。

Java代码  

  1. function create_html($filepath, $phpfile, $page = 1){   
  2.        global $siteurl;   
  3.        $filepath = ROOT.$filepath;   
  4.        $htmlpath = substr($filepath,0,strrpos($filepath,"/"));   
  5.        if(!is_dir($htmlpath))makeDirs($htmlpath);   
  6.        $contents = dfile_get_contents($siteurl.$phpfile);   
  7.   
  8.        dfile_put_contents($filepath, $contents);  
  9.   
  10. }   

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

伪静态是相对真实静态来讲的.通常我们为了更好的缓解服务器压力 ,和增强搜索引擎的友好面.都将文章内容生成静态页面.但有时为了实时的显示一些信息.或者还想运用动态脚本解决一些问题.不能用静态的方式来展示网站内容.可这就损失了对搜索引擎的友好.怎么样在两者之间找个中间方法呢,这就产生了伪静态技术.

 

下面是生成伪静态地址和逆转伪静态地址的两个函数,这两个函数在相应的位置引用就可以实现将http://www.zhongya.cn/certificate_page.php?clid=22

转成这样的http://www.zhongya.cn/certificate_page.php/clid_22.htm形式。

Php代码  

  1. /****************************** 
  2. 使用参考: 
  3. 将此http://www.zhongya.cn/company/companyshow.php?action=list&page=2  
  4. 地址生成http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm形式 
  5.  
  6. $url="http://www.zhongya.cn/company/companyshow.php?action=list&page=2"; 
  7. $urlStr=MakeUrlHtml($url); 
  8. echo $urlStr; 
  9. *****************************/  
  10. function MakeUrlHtml($url){  
  11.     $durl=parse_url($url);  
  12.     $urlStr="";  
  13.     if($durl['host']) $urlStr.=$durl['scheme']."://".$durl['host'];  
  14.     if($durl['path']) $urlStr.=$durl['path'];  
  15.     if($durl["query"]){  
  16.         $durl=explode("&",$durl["query"]);  
  17.         foreach($durl as $surl){  
  18.             $gurl=explode("=",$surl);  
  19.             $eurl[]=$gurl[0]."_".$gurl[1];  
  20.         }  
  21.         $tmpurl=join("/",$eurl).".htm";  
  22.         $urlStr.="/".$tmpurl;  
  23.     }  
  24.     return $urlStr;  
  25. }  
  26.   
  27. /****************************** 
  28. 描 述:完成将伪静态地址还原成$_GET形式 
  29. 使用参考: 
  30. 将此http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm地址 
  31. 还原出$_GET["action"]=list/$_GET["page"]=2 
  32. ParseUrl(); 
  33. *****************************/  
  34. function ParseUrl(){  
  35.     if($_SERVER['PATH_INFO']!=""){  
  36.         $pathinfo=substr($_SERVER['PATH_INFO'],1);  
  37.         $pathinfo=str_replace(".htm","",$pathinfo);  
  38.         $tmp=explode("/",$pathinfo);  
  39.         foreach($tmp as $val){  
  40.             $path=explode("_",$val);  
  41.             $count=count($path);  
  42.             for($i=0;$i<$count;$i+=2){  
  43.                 $_GET[$path[$i]]=$path[$i+1];  
  44.             }  
  45.         }  
  46.     }  
  47. }  
时间: 2024-08-21 11:15:21

网站静态化的相关文章

网页静态化-如何实现网站静态化,部分能实时显示

问题描述 如何实现网站静态化,部分能实时显示 我想做一个自己的论坛网站.我的想法是把这个网站的动态页面都静态化显示.但是有一个问题是,比如说 由于我网站的页面都是静态化的,我论坛的某个用户发了个帖子,怎么让这个帖子能实时显示出来. 解决方案 Ajax技术,可以实现对页面中局部区域的动态刷新,使得用户能够以更好的方式获得最新的数据信息.只更新需要查看的信息,页面中其他信息保持不变 解决方案二: 传统WEB应用需要定时AJAX获取.页面和后端不会保持长连接.

asp 网站静态化函数代码html_应用技巧

复制代码 代码如下: Function htmll(mulu,htmlmulu,FileName,filefrom,htmla,htmlb,htmlc,htmld) if mulu="" then mulu="/" if htmlmulu="" then htmlmulu="/" mulu=replace(SysRootDir&mulu, "//", "/") htmlmulu=

asp 网站静态化函数代码html

复制代码 代码如下: Function htmll(mulu,htmlmulu,FileName,filefrom,htmla,htmlb,htmlc,htmld) if mulu="" then mulu="/" if htmlmulu="" then htmlmulu="/" mulu=replace(SysRootDir&mulu, "//", "/") htmlmulu=

静态化网站为何让站长们又爱又恨

随着互联网的进步,SEO公司对网站优化技术也在不断的提升中.但很多SEOer在对网站进行优化时,还是喜欢对网站进行静态化.对现在的网站优化方式很多,不单单是静态化网站,静态化网最初只是网站建设的方法,如今也有很多动态化的网站建设,但在优化时却也会进行网站网站静态化.那么是出去什么原因? 搜索引擎索爬行完整 我们在对网站优化时针对的是搜索引擎,动态化的网站在内容上都隐藏的比较深,从而在蜘蛛爬行时不那么的容易,甚至有的时候,只能通过网站的地图和网站的导航才能找到,相对这点,静态化网站就能很好的把网站

PHP网站页面静态化的生成方法介绍

在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存等实现页面静态化,今天就以PHP实例教程形式讨论PHP生成静态页面的方法. 什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同. PHP伪静态教程:利用Apache mod_rewrite实现URL重写的方法 PHP生成静态HTM

网站-网首页静态化-提高访问效率

问题描述 网首页静态化-提高访问效率 请教大家有经验的,比如一个视频网站首页,轮播图和视频可能回1小时更新,视频播放数,点赞数要求实时更新, 这样的首页是不是不适合做静态化啊,如果可以如何做,如何访问效率,不知道大家有什么建议,比如美拍的官网,是静态化的吗,看起来访问速度很快 ,请有经验的前辈谈一谈,如何合计. 解决方案 静态化的本质就是缓存,而且是把磁盘当作缓存,这是一种低级原始低效的做法. 事实上现在有无数的缓存框架,缓存框架都是将内存作为缓存,而且有很好的处理脏数据的策略.所以完全不要再用

分享常见的几种页面静态化的方法_php基础

什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同. 为什么要让网页静态化 一.加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高: 二.有利于搜索引擎优化SEO,Baidu.Google都会优先收录静态页面,不仅被收录的快还收录的全: 三.减轻服务器负担,浏览网页无需调用系统数据库: 四.网站更安全,HTML页面不会受php相关漏洞的影响: 观看一

PHP实现HTML页面静态化的方法_php技巧

随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化.一般情况下会从以下方面来做优化 动态页面静态化 优化数据库 使用负载均衡 使用缓存 使用CDN加速 现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于

众说纷纭的静态化 到底对优化有无益处

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 论坛中经常说看到站长们咨询:网站优化时网址是否需要静态化,有的站长会坚持要网站静态化,但是也会发现一些大型的网站仍然使用的是动态地址,网站的静态化真的是众说纷纭,其实对于SEO来说,静态化是最基本的要求之一,从一定程度上来说,静态化的网址更利于蜘蛛的抓取,深圳兼职吧给站长们说说静态化对优化的益处. 首先:蜘蛛害怕抓取复杂的链接,现在的网站的页