读书人

页面静态化学习小结

发布时间: 2012-11-25 11:44:31 作者: rapoo

页面静态化学习总结

apache/ab.exe 这个程序做网站访问压力测试。
ab.exe -n1000 -c10 http://localhsot/test.php

1.访问相同页面,访问.php页面比.html页面要慢;
2.静态化利于seo;
3.防止sql注入;
4.百度建议:url不要太长;使用静态网址;meta里面的keyword要写;尽量不要使用框架;img里面的alt要写;

一、真静态
php.ini文件中;

//开启缓存
ob_start();//output buffering
echo "aaaaaaaaa";
header("content-type:text/html;charset=utf8");
echo "hello";
//ob_get_contents接收output buffering
//ob_clean();//清除output buffering
ob_end_clean();//关闭ob缓存,同时清空。
//ob_end_flush();//把ob缓存的内在输出并清空,并关闭ob
//ob_flush();//输出ob缓存并清空,不关闭ob;
echo "kkkkkkkk";//->程序缓存,必须在header后面;


页面静态化思路:

因为新闻这各信息不是对实时性要求高,并且比较稳定,所以我们可以这样做,
当第一个用户访问某条新闻后,我们使用ob的缓存机制,把内容缓存到html页面。
当下一次访问时,直接访问html即可。


存在问题:

1.程序页面里面的点击查看链接的时候,仍然是一个php页面->html网址;
2.实时性不好,有30s的延迟;

html静态面(真静态)的好处有三点:一是减少服务器对数据响应的负荷;二是加载不用调动数据库,响应速度快;
三是便于优化引擎;
缺点也有几点:一是空间占用比较好大,二是生成的谁的多了,服务器对html文件夹的响应负担也较重;


如果一个系统使用真静态进行页面静态化,需要生成海量的静态页面,我们可以考虑使用伪静态来处理;


二、伪静态

http://localhost/demo.php/126.12.365.html设计成这样的静态网址;

目前有两种方式来处理这种接收方式:

1.在php文件夹中,直接使用正则表达式技术处理;

$_SERVER['PATH_INFO'];取出URL最后的地址;


2.配置apache的rewrite来处理;

1.配置apache启用rewrite机制;
在httpd.conf中启用rewrite
LoadModule rewrite_module modules/mod_rewrite.so
2.配置虚拟主机
到c盘hosts文件添加你的ip和域名对应
127.0.0.1 www.jmb.com
在http.conf文件中启用虚拟主机;
# Virtual hosts 启用虚拟主机
Include "conf/extra/httpd-vhosts.conf"
打开E:\xampp\apache\conf\extra\httpd-vhosts.conf,配置其内容;

<VirtualHost *:80>
##ServerAdmin postmaster@dummy-host2.localhost
#文档根目录
DocumentRoot "e:/xampp/htdocs/static"
#域名
ServerName www.jmb.com
##ServerAlias www.dummy-host2.localhost
ErrorLog "logs/dummy-host2.localhost-error.log"
##CustomLog "logs/dummy-host2.localhost-access.log" combined
#配置rewrite相关选项
<Directory "e:/xampp/htdocs/static"> //<Director>可以有多个,这个使用于不同目录下,配置不同访问权限;
#拒绝所有的访问
#Deny from all
Allow from all
#是否显示到表(在发布项目后一般是不启用,针对这个目录DocumentRoot在htdoc外面的目录生效)
Options +indexes
#是否启用rewrite
#有时候我们可以把rewrite机制和规则写在这里;
Allowoverride all
</Directory>
</VirtualHost>

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

4.在目录下添加了一个.htaccess文件,这个文件夹是配置rewrite机制和规则;
不同目录下可以有不同的.htaccess文件;
<ifModule rewrite_module> //这个意思就是说如果没有rewrite机制的话,就可以不报错;
#写你的rewrite规则
RewriteEngine On
#news-id(\d+)\.html$ 是规则 news.php?id=$1是转发的页面
#可以配置多个规则,顺序是从上到下;
RewriteRule news-id(\d+)\1\.html$ news.php?id=$1
RewriteRule abc-id(\d+)\1\.html$ error.php?id=$1
</ifModule>

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

如果一个网站使用真静态技术,会生成海量的html静态页面,可以考虑使用伪静态技术来优化我们的网站;
url重写(伪静态)的好处:一、可以方便的实现对搜索引擎的优化,并且比生成静态更加方便。
二、占空间比较小。三、首页每天自动变化,不用维护。四、便于广告的轮显;

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


伪静态是站在SEO角度看的,它对应的页面不是真正存在的,而是每次查询数据库得到的信息;
真静态的页面是真正存在的;

小结:如果一个网页会频繁的访问,通过该网页每次都会去操作数据库,可以考虑使用真静态,
如果一个网页为了实现对搜索引擎的优化,提供网站的安全性,使用伪静态;

读书人网 >Web前端

热点推荐