天天看点

网站提速-伪静态(3)

 <b>伪静态</b> 

真静态只是完全生成了HTML。 

当然在你网站的流量没有那么大的时候。URL重写是最好的方法(如果访问量很大,还可以考虑负载均衡) 

URL重写的方法有很多种,APACHE(rewrite),IISREWRITE。PHP脚本直接处理。我们先讲解如何使用PHP脚本直接处理。查看php信息,会看到pathinfo信息,这样做php重写。

&lt;?php

//案例

$str="abck1234dddd9000";

//找到4个连续的数

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

echo "&lt;pre&gt;";

print_r($arr);

echo "&lt;/pre&gt;";

?&gt;

<a target="_blank" href="http://blog.51cto.com/attachment/201210/003156137.gif"></a>

请求

<a href="http://www.hsp.com/news-id3.html">http://www.hsp.com/news-id3.html</a>

相当于

<a href="http://www.hsp.com/news.php?id=3">http://www.hsp.com/news.php?id=3</a>

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文件

在 &lt;Direcotry &gt;段的配置,默认值,是在httpd.conf 的中配置,看根目录.

&lt;VirtualHost *:80&gt;

    #ServerAdmin [email protected]

    #文档的根目录

    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相关选项,

    &lt;Directory "D:\AppServ\www\saisai"&gt;

    #拒绝所有的访问

    #Deny from all

    Allow from all

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

    Options +indexes

    #是否启用rewrite

    Allowoverride  all

    &lt;/Directory&gt;

&lt;/VirtualHost&gt;

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

<a target="_blank" href="http://blog.51cto.com/attachment/201210/003241916.gif"></a>

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

&lt;IfModule rewrite_module&gt;

#写你的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

&lt;/IfModule&gt;

5/这个rewrite的规则也直接在 &lt; Direcotry &gt; 段直接配置

&lt;Directory "D:\AppServ\www\saisai"&gt;

    #Options +indexes

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

    #RewriteEngine On

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

&lt;/Directory&gt;

6/建立多个目录,&lt;Directory "D:\AppServ\www\saisai\wp-admin"&gt;

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

    Deny from all

&lt;/Directory&gt; 

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

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

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

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

定期清理静态文件

在windows 下

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

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

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

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

clear.php

&lt;?php   unlink("d:/appserver/www/news-id100.html"); ?&gt;

④  在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测试结果

&lt;Ifmodule mod_deflate.c&gt; 

AddOutputFilter DEFLATE html xml php js css 

&lt;/Ifmodule&gt;

<a href="http://blog.51cto.com/attachment/201210/021656435.jpg" target="_blank"></a>

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

本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/1032800