高并发和大流量解决方案--动态页面静态化

  先来看看php在服务器的执行过程:当用户请求服务器php文件的时候,服务器将对php文件进行语法分析,其次是解析,最后才运行。当php文件有内容输出时,该内容会先经过服务器的php的缓冲区(buffer),然后再通过TCP传递到客户端。(buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域)

       可见,如果用户直接访问静态页面的时候,服务器的响应时间一般会比访问动态文件的时间短。如果我们能把用户将要访问的动态文件先转化为静态文件即可加快用户访问页面的速度(获取网页的速度)。当然我们要注意静态化的应用场景,页面的静态化主要应用于那些页面内容不经常改动的页面。

       关于静态化,PHP的静态化分为:纯静态和伪静态。其中纯静态又分为:局部纯静态和全部纯静态。这里将的是全部纯静态。

页面静态化其中之一的方法是借助PHP自带的缓冲区OB:

下面是页面缓冲的简单实现

<?php
//可以根据 前端传递参数 COOKIE等进行缓存
$id = $_GET['id'];
//设置缓冲文件名
$cache_name = md5(__FILE__) . '-' . $id . '.html';
//失效时间
$life = 3600;
//判断文件是否存在以及是否过期
if (file_exists($cache_name) && (filectime($cache_name) > time() - $life)) {
    include $cache_name;
    exit;
}
//开启缓冲区
ob_start();
echo date('Y-m-d H:i:s');
$content = ob_get_contents();
ob_end_clean();
//写入到缓冲文件
file_put_contents($cache_name, $content);
echo $content;

除了以上方法之外,我们可以利用框架自带的一些缓冲机制来实现

posted @ 2018-07-18 05:58  吃饭睡觉打豆豆o  阅读(990)  评论(0编辑  收藏  举报