一:
首先先区分一下动态页面和静态页面的区别
动态文件:PHP脚本、Java脚本等
动态文件的执行过程:词法、语法分析 -> 编译 -> 渲染输出
静态文件:HTML文件
从加载速度上可以看出,静态文件明显比动态文件速度快
二:静态文件的分类
真静态:真正的静态文件(访问时候的地址是动态地址,但实际上是静态文件),目的是为了减轻数据库服务器的压力,提高访问速度
伪静态:不是真正的静态文件,(但是访问的时候的网址是静态网址,但实际访问的是动态文件),目的是为了SEO推广,方便百度搜索引擎进行搜索,
三:实现方法
真静态:OB缓冲技术;模板替换术
伪静态:使用PHP脚本进行实现;通过web进行配置实现
四:实现方法及原理
OB缓存
1、实现原理
在PHP执行过程中,存在一个缓冲区output_buffering
ob缓冲:output_buffering(输出缓存),用于缓存响应主体的数据内容。
第一种方式:在php.ini文件中,
第二种方式:在页面中使用ob_start()函数,来开启。
两种方式的区别是,ob_start()只在当前页面有效,推荐第二种方式来完成。
常用函数
ob_start( );开启
ob_get_contents();获取ob缓存里面的数据内容。
ob_clean();//清空ob缓存里面的数据,不关闭ob缓存。
ob_end_clean();//清空ob缓存里面的数据,并关闭ob缓存。
ob_flush();//把ob缓存里面的数据给刷新(移动,推送)到程序缓存,不关闭ob缓存。
ob_end_flush();//把ob缓存里面的数据给刷新(移动,推送)到程序缓存,并关闭ob缓存。
3、实现页面静态化的三种方式
①访问时生成静态文件(不推荐)
控制好静态文件的更新时间
②在后台手动生成静态文件
后台手动更新
③使用定时任务定期生成静态文件(推荐使用)
最佳做法:②③的结合体,先后台手动生成一次静态文件,然后定时更新,如果在更新的时间内,定时脚本没有运行,就手动清除缓存(删除缓存文件)
模板替换技术
1、实现方式:
(1)在添加新闻内容的时候,生成对应的新闻详情的静态页面。
(2)在修改新闻内容的时候,要重新生成新闻详情的静态页面。
(3)在访问新闻详情页面的时候,直接访问生成的静态页面
真静态的应用场景
1)网站页面访问比较频繁的,但是更新不是很频繁,比如一些新闻类型的网站(详情页)及网站的首页
2)不适合于要求实时更新的一些网站,比如股票及银行类型的网站
3)一般来说后台不用做真静态
先来看一个网址:
http://jingyan.baidu.com/article/90bc8fc804f4faf652640c6c.html
从形式上看是一个静态地址,实际上还是访问的动态地址,
比如:访问:http://www.abc.com/news-sport-id123.html
实际上是:http://www.abc.com/news.php?type=sprot&id=123;
作用:主要是利于seo推广,静态页面的方式,比较容易被搜索引擎给搜集。
第一种:apache的重写机制
实现原理:使用apache/nginx的rewrite机制(就是一个url的重写机制)
在apache/conf/httpd.conf开启(开启重写模块)
配置方式:直接在配置虚拟主机处进行配置 ,每次修改apache的文件都需要重启apache
在配置虚拟机时给对应的域名开启重写机制
权限控制 先拒绝后允许
在需要重写机制的文件夹的下面新建文件 .htaccess 并在.htaccess中写入重写规则
比如:
重启apache
CI框架中的重写规则
第一步:在虚拟主机开启 AllowOverride All
第二步: //配置伪静态时 在CI框架的配置文件config中 修改URL协议为
$config['uri_protocol']= 'PATH_INFO';
nginx的重写机制
2.在需要重写机制的文件夹写新建 .htaccess 文件 并在文件中写入相应的规则
比如:
3.在ngniz的配置文件ngnix.conf 或者 引入的.conf文件中引入重写规则的文件<文件放在server内location外>
4.重启nginx .php-fpm
伪静态的使用遵循原则
主要是为了搜索引擎的收集
只要url不要过长,过多的参数,同时不要让蜘蛛陷入链接黑洞,现在的搜索引擎技术对待动态链接和静态链接基本没有区别。因此,如果不方便动态链接静态化的站长朋友,也没必要将太多精力花在这方面。另外,伪静态是通过服务器配置将动态映射成静态页面,多了一个映射步骤,伪静态处理更加占用服务器cpu资源。
如何选择真静态和伪静态?
网站实时性要求高,不要使用静态化(真静态,伪静态均不适宜)。
如果网站访问量较小,没有必要使用静态化技术(网站后台)
如果数据项目文件不多,但是访问频率极大,建议使用真静态,比如新浪新闻频道。
如果数据项目海量(论坛),使用真静态会生成海量的html静态页面,建议使用伪静态。
在一个大型网站中,静态化技术是综合使用的,这个需要大家经验的积累,多做项目。(
网站:新闻频道,真静态,基金频道:伪静态,管理后台:不使用静态技术)
后台: 管理控制前台生成真静态或者更新静态页面