php实现页面静态化

页面划分

页面从两个大方向来划分的话

  1. 动态页面:当我们加载页面的时候,它会去首先执行动态文件当中的动态程序, 这些动态程序有哪些呢? 比较流行的有php…

  2. 静态页面:纯静态的html文件

静态化的意义

动态页面静态化,如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法
实质是生成静态的HTML文件,减少服务器脚本的计算时间, 降低服务器的响应时间

静态化不适用于内容经常变换的应用,例如,微博等,微博基本上以每秒来计算 每秒钟更新的内容非常快

buffer认知

buffer概述:buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域。php生成纯静态页面也是围绕着buffer

操作系统buffer:我们保存一个php文件时,先把内容写入到一个buffer当中,当一个buffer写满了之后就会把buffer当中的数据写入到磁盘当中,这是我们操作系统的一个buffer

类似的,对于执行一个php文件的时候如果有输出内容,先经过output_buffering,再通过tcp 传给终端(浏览器)

实现

开启PHP内置缓存机制实现页面静态化
可以在php.ini中设置output_buffering = On或者在在程序中开启ob_start()

";
echo ob_get_contents();// 1

实现静态化主要用的几个函数

ob_start() 打开输出控制缓冲
ob_get_contents() 返回输出缓冲区内容
ob_clean() 清空(擦掉)输出缓冲区
ob_get_clean() 得到当前缓冲区的内容并删除当前缓冲区
file_put_contents() 

案例

// 是否存在静态页面index.html并且修改时间不超过1200秒
if (is_file('./index.html') && (time() - filemtime('./index.html') < 1200)) {
	require_once('./index.html');
} else {
	// 查询数据库
	ob_start();
	require_once('template/index.php');
	$s = ob_get_contents();
	file_put_contents('./index.html', $s);
	//ob_clean();
}

如何触发系统生成纯静态化页面

  1. 页面添加缓存时间
  2. 手动触发方式
  3. crontab定时扫描程序(最常用)

局部动态化
使用ajax局部动态更新

你可能感兴趣的:(php)