ThinkPHP实现静态缓存和动态缓存

利用ThinkPHP既可以很容易实现页面静态化(静态缓存),又可以很容易实现动态缓存(文件缓存和memecache缓存等)

工具/原料

  • memcached.exe

  • php_memcache.dll

方法/步骤

  1. 弄清静态缓存和动态缓存的用途:

    静态缓存:生成静态页面——缓存的是整个页面;

    动态缓存:仅对数据库中的数据进行了缓存,即“通过动态缓存,不需要再读取数据库了,直接通过缓存文件来调取相应数据”;

  2. 第二步:静态缓存的实现,在config.php文件中作如下配置:

    ThinkPHP实现静态缓存和动态缓存
  3. 动态缓存的实现方式“文件缓存”(默认方式):

    ThinkPHP的S()函数将“从数据库中获得的数据”缓存到“文件”中;

    //S(‘缓存名称’,’缓存数据’,’缓存时间’)—缓存文件默认保存到“Runtime/Temp/”文件夹

    存数据:S(‘index_list’,list,10); //list:是从数据库中读取的数据

    读数据:S(‘index_list’); //直接从缓存文件读取,不再经过数据库

  4. 动态缓存的实现方式“memecache缓存”,需先安装Memcached

  5. 再开启memecache缓存,在config.php中作如下配置

    ThinkPHP实现静态缓存和动态缓存
  6. 6

    其次通过S()函数实现“memecache缓存”:

     

    ThinkPHP的S()函数将“从数据库中获得的数据”缓存到“内存”中;

    存数据:S(‘index_list’,$list,10);

    读数据:S(‘index_list’)

  7. 7

    至此,你可以利用ThinkPHP实现静态缓存和动态缓存了

    END

注意事项

  • 安装Memcached时,需下载正确版本的php_memcache.dll文件

    http://jingyan.baidu.com/article/93f9803fea7cf4e0e46f55ad.html

Thinkphp实现站点静态化的方法

thinkphp提供了一个有效的生成静态页的方法,(在tp2.0的手册上有说明,3.0的手册上没有说明了,不过3.0方法还是存在的。)
$this->buildHtml('静态文件', '静态路径','模板文件');
稍微说明下参数,有些朋友问我这个参数和具体如何使用。
参数一:静态文件,是指生成后的静态文件名,文件保存路径完整的就是:静态路径/静态文件。例如静态文件设置a/index.那么保存的路径就是项
目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建)
参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来更改静态路径。
define(‘HTML_PATH’, ‘./’);(将静态路径义为网站根目录)
参数三:模板文件,我感觉官方这个描述是不正确的,准确的来说应该是目标模块,就是需要生成静态文件的模块。格式:模块名:操作。比如要生成Index下的a方法为静态文件,那就是Index:a。如果为空则默认生成当前操作的静态文件。
例子:
class IndexAction extends Action {
    public function index(){
        this->buildHtml("index",'',"");this -> display();
    }
}
其实
$this->buildHtml("index",'',"");
$this->buildHtml("index",'',"Index:index");
$this->buildHtml("index",'',"index");
这样三个格式等效的
下面是静态化的实现,就两种方法
可以在当前模块下加如上述语句,那么只要运行该模块就会产生指定的目录下的”模块.html”文件,通常的做法就是站点建设好以后,专门写一个方法,然后让其执行,使整个站点一次性生成静态文件,注意:如果站点有编辑或调整那么必须清理缓存一次,就是项目下的Runtime文件夹必须清空

thinkphp模板中对时间戳的转换

在thinkphp中前台静态html文件需要解析一个时间戳。则需要转换成时间段。

{$vo.create_time|date=’Y-m-d H:i:s’,###}

这样就可以把一个时间戳转换成我们熟悉的时间段了。