thinkphp文件静态缓存学习


本文分享使用thinkphp框架自带的静态缓存实现文件静态化。
欢迎讨论和吐槽。

目的

  • 使用的场景是访问活动页面的时候希望进行静态化处理,提升请求效率;
  • 页面静态化有多种解决方案,如使用yac保存在内存中,本文分享的是使用tp自带的缓存功能生成静态化的html文件(可以是其他文件)。

    操作

    使用此功能是比较简单,步骤如下(基于tp3.2):

  • conf中配置开启静态缓存

    'HTML_CACHE_ON'=>true,//静态化相关
     'HTML_CACHE_TIME'   =>    60,   // 全局静态缓存有效期(秒)
     'HTML_FILE_SUFFIX'  =>    '.html', // 设置静态缓存文件后缀
     'HTML_CACHE_RULES'=> array(
         'index:commonindex' => array('{act}', '60'),  //缓存规则
     ),
    

    缓存规则有多种配置方式,可参考文档

  • 确认HTML_PATH的路径配置,确认此路径文件夹存在:

    defined('HTML_PATH')    or define('HTML_PATH',      APP_PATH.'Html/'); // 应用静态目录
    

    问题

    这里阐述下分享过程中遇到的问题:

  1. 确保HTML_PATH指定的文件夹存在
  2. 配置的规则方法要用小写,如commonindex(未测试commonIndex是否可以);
  3. tp的缓存需要基于display加载的view文件,没有加载view文件直接输入内容无法生成缓存。

    思考和总结

  • 使用tp自带的缓存功能实现文件静态化比较简单的;
  • 但是其中也有些限制,在问题模块大致阐述,还可以用以下方案替代:
    1. 将html内容存在内存(如使用yac,redis),请求的时候先拿缓存直接输出;
    2. 访问到页面后生成html文件放在服务器某目录,下一次访问在进入项目之前判断存在此文件则直接走缓存文件;
  • 页面静态化的时候,如果页面有内容是需要动态加载的,对于数据少的可以加载页面完了用ajax请求去更新,更好的方法是
    在服务器端取出静态文件的时候就去更新拼接态内容,这样前端看不到一个刷的过程。

文章作者: Xudong Jiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xudong Jiang !
 上一篇
故事-睡前检查 故事-睡前检查
两鬓微白的父亲慈爱的看着床上躺着的4岁的儿子,像往常一样轻声为他读着睡前故事。还是一样的故事,孩子却不像往常一样,依然精神奕奕。父亲还没有摆脱白天工作的疲惫,轻吻儿子的额头。“该睡觉啦。”“好的,daddy。”父亲起身,走到门口欲关灯出去。
2016-10-17
下一篇 
swoole-学习使用中遇到的问题记录 swoole-学习使用中遇到的问题记录
本文分享自己在学习使用swoole中遇到的一些问题,在此记录。欢迎讨论和吐槽。 疑问-思考 我们使用swoole server的时候,在前面是否需要设置nginx代理等; 使用swoole中设置worker进程,设置几个比较合适? 个人感觉
2016-07-13
  目录