伪静态
真静态只是完全生成了HTML。 当然在你网站的流量没有那么大的时候。URL重写是最好的方法(如果访问量很大,还可以考虑负载均衡) URL重写的方法有很多种,APACHE(rewrite),IISREWRITE。PHP脚本直接处理。我们先讲解如何使用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>";
?>
配置apache的rewrite来处理
请求
相当于
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
#是否显示列表(在发布项目后一般是不启用,对于这个配置,针对DocumentRoot在htdos外的目录生效)
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
#是否显示列表(在发布项目后一般是不启用,对于这个配置,针对DocumentRoot在htdos外的目录生效)
#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
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>
注: 个人推荐使用伪静态配合缓存技术来为提供大型网站提速