ThinkPHP生成缓存的bug修复,望采纳

浏览:392 发布日期:2014/11/28 分类:技术分享 关键字: HTML缓存
ThinkPHP 原先生成HTML缓存的是只要用display() 就生成。
建议 识别是否发送了 4xx 5xx 3xx头部再决定:

修改 WriteHtmlCacheBehavior:
加入:!preg_match('/Status.*[345]{1}\d{2}/i', implode(' ', headers_list()))namespace Behavior;

use Think\Storage;

/**
 * 系统行为扩展:静态缓存写入
 */
class WriteHtmlCacheBehavior
{

    // 行为扩展的执行入口必须是run
    public function run(&$content)
    {
        //2014-11-28 修改 如果有HTTP 4xx 3xx 5xx 头部,禁止存储
        if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')
            && !preg_match('/Status.*[345]{1}\d{2}/i', implode(' ', headers_list()))
        ) {
            //静态文件写入
            Storage::put(HTML_FILE_NAME, $content, 'html');
        }
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>