在慕课网上看了一个关于PHP实现页面静态化的课程,http://www.imooc.com/learn/330,写点笔记记录一下。
1、动态页面是php,jsp,asp页面,静态页面是html,htm,shtml页面。
2、动态页面地址和静态页面地址的区别。
3、PHP静态化分类:(1)纯静态--------局部纯静态(通过ajax和js实现)、全部纯静态
(2)伪静态:将动态页面的地址转化为静态页面的地址,通过配置服务器实现
4、纯静态原理:(1)将内容直接写入html文件,使用file_put_contents()函数
(2)将缓冲区的内容写入html文件
a. 打开缓冲区(在PHP配置文件中开启,或在脚本中使用ob_start()函数)
b. 在脚本文件中输出内容,使用ob_get_contents()函数获取内容,写入html文件,最后清空缓冲区(脚本文件中输出的内容将不会输出,而是写入文件 了)
5、纯静态化的实现:
(1)从数据库或缓存中读取数据,组装为需要使用的形式
(2)在模板文件中使用组装好的数据
(3)打开缓冲区,引入模板文件(在引入模板文件时,模板文件的内容将会进入缓冲区,此时的内容包含了数据和模板文件)
(4)将缓冲区的内容写入静态文件
6、出发系统生成纯静态化页面的方案:
(1) 在php文件中设置静态文件的有效时间,当时间超出时,重新生成静态化文件
(2) 在页面上添加按钮,手动触发生成静态化文件
(3) Linux系统的crontab命令,定时触发php文件,生成静态化文件
7、伪静态(实际访问的仍然是动态文件)方案:
(1)PHP处理伪静态
a. 使用正则表达式匹配,当$_SERVER['pathInfo']符合特定的格式时,取出参数
b. 使用参数获取数据,返回到页面
(2)配置WEB服务器rewrite实现
a. Apache服务器配置
在vhost中设置RewriteRule,将特定的格式转成动态页面的格式,访问动态文件
也可以开启在访问某文件或某路径时,如果文件不存在,才重写URL。或者无论是否存在,都重写URL。
b. Nginx服务器配置