很多框架的模板引擎都有页面静态化的功能 目的是为了优化网站运行时间
静态化分两种 纯静态和伪静态
一. 纯静态
纯静态展示的是实实在在的静态页面
运行PHP程序 判断是否存在静态页 如果存在 展示静态页 如果不存在 生成静态页 再展示
实现方法 是PHP的ob缓冲
//PHP程序一系列逻辑 并将要展示的数据赋值给某些变量准备在模板中使用
ob_start();//开启ob缓冲区 也可以在配置文件中开启
require_once('template/index.php');//引入模板文件 也有可能是html文件 此时模板中的变量已全部解析替换
$s = ob_get_contents(); //将缓冲区的内容取出
file_put_contents('./index.html', $s);//将缓冲区的内容写入一个静态文件 一般的做法是将文件路径加密之后作为文件名
二.伪静态
伪静态就是在url上看起来是静态 实际上它走的还是动态流程
http://www.baidu.com/home/1.html
实现方法有两种
1.是项目路由解析把后缀拎出来
$_SERVER变量里可以抓出url上面的所有节点 拆分成自己想要的即可 该替换的替换 该组合的组合
2.是Apache重写功能rewrite
开启Apache重写功能 在项目目录中创建.htaccess文件写入规则
比如写入如下内容
RewriteEngine on
RewriteRule ^localhost/([a-zA-Z]{1,})/([0-9]{1,})\.html$ localhost/$1.php?id=$2
如浏览器访问localhost/home/1.html 实际上被apache重写为localhost/home.php?id=1
重写规则的细节规则有点多,有兴趣的朋友可以去研究。
静态化技术也就这两种 伪静态只是url看起来好看 实际上对程序并没有优化效果