ThinkPHP中似乎没有对gzip的配置选项。不过实现起来还是挺简单的。以下是对 ThinkPHP 2.1 的修改方法。
首先要确定空间是否支持Zlib, 然后找ThinkPHP的控制输出函数output()。
控制输出的文件在 ThinkPHP/Lib/Think/Core 文件夹下,文件名 View.class.php。
/** +---------------------------------------------------------- * 输出模板 +---------------------------------------------------------- * @access protected +---------------------------------------------------------- * @param string $content 模板内容 * @param boolean $display 是否直接显示 +---------------------------------------------------------- * @return mixed +---------------------------------------------------------- */ protected function output($content,$display) { if(C('HTML_CACHE_ON')) HtmlCache::writeHTMLCache($content); if($display) { if(false !== strpos($content,'{__RUNTIME__}')) { $runtime = C('SHOW_RUN_TIME')? ' <div id="think_run_time" class="think_run_time">'.$this->showTime().'</div> ' : ''; $content = str_replace('{__RUNTIME__}', $runtime, $content); } if(extension_loaded('zlib')){//检查服务器是否开启了zlib拓展 ob_start('ob_gzhandler'); } ob_start("compress"); function compress($buffer) {//去除文件中的注释 $buffer = preg_replace('!/*[^*]**+([^/][^*]**+)*/!', '', $buffer); return $buffer; } echo $content; if(C('SHOW_PAGE_TRACE')) $this->showTrace(); if(extension_loaded('zlib')){ ob_end_flush();//输出buffer中的内容,即压缩后的css文件 } return null; }else { return $content; } }