一、 页面静态化中几个重要概念
静态网址:纯静态HTML文档
动态网址:内容存于数据库中,根据要求显示内容,url中以?,&显示不同的参数,如:news.php?lang=cn&class=1&id=2/*1=1*/
伪静态网站:伪静态仅仅是对动态网址的一个重写,伪静态网址不能让动态网址“静态化” ,搜索引擎不会认为伪静态就是HTML文档。其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。
二、举例说明:这是一个动态网址 news.php?lang=cn&class=1&id=2,
从seo的角度来看,最好重写为 news-cn-sport-id2.html。这样的也更加有效的防止sql注入攻击
☞ 但是也不要精简重写为 news-2.html,这样简写同样不利于搜索引擎优化.
三、页面静态化的概念:我们大多数情况下是直接访问php文件,php脚本在服务器端执行并返回信息,对于一些大型的网站,访问量很大,频繁的动态操作和操作数据库会加重服务器的负担。在实际开发中,通常使用缓存技术(memcache)或者页面静态化来解决
四、页面静态化分类
1.从静态化形态看,页面静态化分为:
真静态 和 伪静态
2.从静态范围看,页面静态化分为:
整个页面静态化 和 局部静态化(jquery)
五、为什么要将动态的网站改写成静态的形式?
1./*=*/ 防止sql注入
2.动态的网站不利于SEO,因为?后面的参数会动态的变化,搜索引擎抓取的时候,不知道该怎么保存。比如: news.php?lang=cn&class=1&id=2 这样的动态网址,不如news-cn-sport-id2.html ,这样的格式.
3.减少访问的时间
六、使用php的ob缓存机制完成页面静态化
注意:仅靠php自身的缓存机制并不能完美的解决页面静态化,往往需要和其它静态化技术(通常是伪静态技术)结合。
php5.2 之前默认情况是关闭ob缓存,在php5.3之后,默认是开启ob缓存的在php.ini output buffering
1.缓存:smarty缓存, ThinkPHP框架的缓存,PHP的ob缓存
ob---缓存,先将输出的数据呢,缓冲到一块空间然后显示的时候再显示这块空间的缓存的数据
2.ob缓存入门
(1) ob缓存:先判断一下,是否开启ob缓存,如果你开启了,先将输出的数据放到ob缓存中,如果你没有开启ob缓存,然后放到程序缓存中
(2)程序缓存:就是如果没有开启ob缓存,先将数据缓存到程序中,等echo都完了,再统一的输出
(3)获得缓存的数据:
ob_start() 先将输出的数据优先放入到 ob缓存中
ob_clean() 清空缓存,但是没有关闭
ob_end_clean() 清空缓存,同时也关闭缓存,ob_flush() 将ob缓存的数据,输出到程序缓存
ob_end_flush() 将ob缓存的数据输出到程序缓存并且关闭ob缓存
ob_get_contents()文件输出函数,将获得缓存数据输出到文件中(静态页面)
<?php
ob_start();
echo 'hello';
header("Content-Type:text/html;charset=utf-8");
echo 'world';
echo 'nihao';
echo '<hr/>';
//ob_clean();//清空缓存,但不删除
//echo 'linhaiyu';
//ob_end_clean();//清空缓存,同时关闭缓存
//ob_flush();//将ob缓存的数据,输出到程序缓存
ob_end_flush();//将ob缓存的数据,输出到程序缓存,同时关闭缓存
echo 'litong';
echo ob_get_contents();
七、PHP的缓存机制:
1.ob缓存,如果开启了ob缓存,优先将数据放到ob缓存中
2.程序缓存,如果没有开启ob缓存,再将数据缓存到
八、页面静态化案例:
新闻管理系统 FCK/ob_cache_eg