伪静态 

真静态只是完全生成了HTML 
当然在你网站的流量没有那么大的时候。URL重写是最好的方法(如果访问量很大,还可以考虑负载均衡) 
URL
重写的方法有很多种,APACHE(rewrite)IISREWRITEPHP脚本直接处理。我们先讲解如何使用PHP脚本直接处理。查看php信息,会看到pathinfo信息,这样做php重写。

<?php

//案例

$str="abck1234dddd9000";

//找到4个连续的数

preg_match('/(\d\d)(\d\d)/si',$str,$arr);//i不区分大小写echo

echo "<pre>";

print_r($arr);

echo "</pre>";

?>


 

配置apacherewrite来处理

请求

http://www.hsp.com/news-id3.html

相当于

http://www.hsp.com/news.php?id=3

1/加载该模块:

修改httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

2/配置虚拟主机

C:\Windows\System32\Drivers\etc

 c hosts文件添加你的 ip  域名对应

192.168.211.1  saisai.com

192.168.211.1  www.saisai.com

 http.conf 文件中启用虚拟主机

# Virtual hosts 启用虚拟主机

Include conf/extra/httpd-vhosts.conf

3/配置 httpd_vhosts.conf文件

 <Direcotry >段的配置,默认值,是在httpd.conf 的中配置,看根目录.

<VirtualHost *:80>

    #ServerAdmin webmaster@dummy-host2.somenet.com

    #文档的根目录

    DocumentRoot "D:\AppServ\www\saisai"

    #域名

    ServerName saisai.com

    ErrorLog "logs/dummy-host2.somenet.com-error.log"

    #CustomLog "logs/dummy-host2.somenet.com-access.log" common

    #配置rewrite相关选项,

    <Directory "D:\AppServ\www\saisai">

    #拒绝所有的访问

    #Deny from all

    Allow from all

    #是否显示列表(在发布项目后一般是不启用,对于这个配置,针对DocumentRoothtdos外的目录生效)

    Options +indexes

    #是否启用rewrite

    Allowoverride  all

    </Directory>

</VirtualHost>

4.在目录下添加了一个 .htaccess  文件,这个文件时配置rewrite机制和规则

windows下无法直接建立.htaccess文件,这时可以使用其他软件重命名即可。

<IfModule rewrite_module>

#写你的rewrite规则

RewriteEngine On

#news-id(\d+)\.html$ 是规则  news.php?id=$1 是转发的页面

#正则 子表达式 捕获 反向引用

#  "news-id33.html"

可以配置多个规则,匹配的顺序是从上到下

RewriteRule  news-id(\d+)\.html$   news.php?id=$1

RewriteRule  abc-id(\d+)\.html$     error.php

</IfModule>

 

5/这个rewrite的规则也直接在 < Direcotry > 段直接配置

<Directory "D:\AppServ\www\saisai">

    #拒绝所有的访问

    #Deny from all

    Allow from all

    #是否显示列表(在发布项目后一般是不启用,对于这个配置,针对DocumentRoothtdos外的目录生效)

    #Options +indexes

    #是否启用rewrite

    Allowoverride  all

    #我们有时候,也可以把rewrite机制和规则写这里

    #RewriteEngine On

    #RewriteRule  news-id(\d+)\.html$   news.php?id=$1

</Directory>

6/建立多个目录,<Directory "D:\AppServ\www\saisai\wp-admin">

    #拒绝所有的访问 ,保护目录

    Deny from all

</Directory> 

 

url重写的缺点:我看只有一个,那就是效率不如生成html的,因为它不是真正意义上的静态页,每次请求是要读取数据库的。但你可以用缓存技术来补偿一下。

伪静态是站在seo角度看.,他对于的页面不是存在的,而是每次查询数据库得到的信息,

真静态的页面是真的存在.

如何更好的使用 伪静态+ob

定期清理静态文件

windows 

  编写一个 clear.php 文件,可以去检测某个目录下的文件是否过期

  在编写my.bat文件,做个计划任务,即可定期清理文件

“del d:/appserver/www/news-id100.html”

  或者制作一个clear.php定义一个unlin删除函数,ab测试一下

"C:\\myenv\\apache\\bin\\ab.exe" -n 1 -c 1 http://www.hsp.com/clear.php

clear.php

<?php   unlink("d:/appserver/www/news-id100.html"); ?>

  windows使用任务计划.


linux使用crontab

vi qingli.sh

#!/bin/bash

#qingli.sh

rm -rf /usr/local/apache/htdoc/news-id100.html

然后crontab -e建立计划任务即可。

伪静态和真静态的特点和区别

①真静态访问效率高,利于seo.可以减少对数据库的操作。但是会占用大量的磁盘.

②伪静态一、可以方便的实现对搜索引擎的优化,二、占空间比较小。三、通过生成不同view-id2.hmtl 可以实现内容的变化.四有效的防止了注入攻击

真静态和伪静态的选择          

什么情况下不适合使用静态化技术.

网站实时性要求高,不要使用静态化(真静态,伪静态均不适宜).

如果网站访问量较小,没有必要使用静态化技术

如果数据项目不多,但是访问频率极大,建议使用真静态,比如新浪新闻频道

如果数据项目海量,使用真静态会生成海量的html静态页面,建议

使用伪静态

在一个大型网站中,静态化技术是综合使用的,这个需要大家经验

的积累,多做项目

对于一些特殊的CMS都会有相应的伪静态方案,如wordpress使用wp-super cache插件,这些需要在实际的应用中学习。

当然还有开启gzip的方法也可提高网站的访问速度,如在.htaccess文件加入下面代码,然后在gzip.zzbaike.com测试结果

 

<Ifmodule mod_deflate.c> 

AddOutputFilter DEFLATE html xml php js css 

</Ifmodule>

 

 

个人推荐使用伪静态配合缓存技术来为提供大型网站提速