PHP_1:网页静态化的核心

1. 场景      

        PHP网页需要PHP引擎动态生成,期间还很有可能涉及到数据库的操作。对于大量的访问,这些重复的工作将大大增加服务器的负载。因此,将PHP动态网页用HTML静态网页替代,能极大的提高效率。但是,对于数据快速变化的场景,网页静态化是不适宜的。此时,应是使用AJAX。

2. 核心代码

      怎么读取PHP网页的内容,并生成静态HTML?毕竟不可能手动操作。先看核心代码如下:

<?php
     ob_start();
     require_once('index.php');
     $data = ob_get_contents();
     file_put_contents('index.html', $data); 
     ob_end_flush(); 
?>

        通过ob_start(),开启缓存模式,即客户端请求后,PHP引擎(如Apache)先将内容写入缓存,然后再将缓存内容向客户端回送。

        通过ob_get_contents(),从缓存区读取了index.php的内容,并写入了index.html中,生成了一份静态网页。

        通过ob_end_flush(),也向客户端flush了index.php的内容,最后end了缓存区。

        这样,客户端正常的获取了请求的内容,服务器端也存留了一份静态网页。下次,客户端再申请时,应想法直接回送这份静态网页。

3. 核心代码何时运行

         http协议,是客户端发起申请后,服务器端再生成网页内容。因此,将PHP网页转化为HTML这一过程,也是发生再客户端发起申请后。    

4. 客户端再次请求后,如何获取静态网页

        可通过静态网页的文件时间来判断时效性(例如60秒),当静态网页修改时间距离现在不超过有效时间时,直接回送静态网页内容;否则,回送PHP动态网页内容。核心代码完善如下:

<?php
	if(time()-filemtime("index.html") > 60){
		ob_start();
		require_once('index.php');
		$data = ob_get_contents();
		file_put_contents('index.html', $data); 
		ob_end_flush(); 
	
		//输出控制台信息
		echo("<script>console.log('This is not buffered');</script>");  
	}
	else{
		require_once("index.html");
		echo("<script>console.log('This is buffered');</script>");  
	}
?>

        5. 除了首页,其他页面也可以采取这样的方法静态化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值