用户浏览文章详情,如果每次都从数据库读取会对数据库造成很大的压力,所以讲文章做成 .shtml 的静态页面并限时去更新它是比较好的。用apache的ab压力测试,发送1000次请求,20并发,发现使用下面的生成静态页面方式每秒最大访问量是105,每次请求需要9.5毫秒,而如果不采用这种方式的话每秒最大访问量是50,每次请求需要19.6毫秒,差别是如此之大,说明了生成静态.shtm文件l的重要性
下面说下本人的思路:
1、用户访问的时候判断对应文章的静态页面是否存在,如果不存在生成对应文章的静态页面,并输出静态页面,那么后面的用户继续访问的话就暂时不会再调取数据库了。
2、如果用户访问的对应的文章的静态页面存在,则对静态文件的最后一次修改时间进行判断,看是否过期。如果过期则重新查询数据库生成静态页面,如果没有过期则直接输出静态页面。
主要用到了以下的函数:
判断文件是否存在:file_exists(); 获取文章修改时间:filemtime(); 修改文件内容:file_put_contents(); 读取文件内容:file_get_contents();
打开缓冲区:ob_start(); 清除缓冲区并且获取输出流:ob_get_clean();
下面展示下代码和注释(用的ThiknPHP框架):
<?php
namespace Home\Controller;
use Think\Controller;
class ArticleContro