目前大多數浏覽器都已經支持頁面的壓縮輸出,通過壓縮輸出,頁面大小可以減少30%,但是由於3.0及以前的版本都沒有內置頁面壓縮輸出功能,所以一般來說,開發人員需要自己在入口文件中添加:
ob_start('ob_gzhandler');
但是由於服務器環境的不同,有時候這個配置會和php.ini文件中的zlib壓縮配置沖突。而ThinkPHP3.1版則內置了頁面壓縮輸出的功能,不再需要再手動添加ob_gzhandler代碼,增加OUTPUT_ENCODE配置參數,並支持檢測zlib.output_compression。
框架默認會進行頁面壓縮輸出,並且會自動檢測zlib.output_compression配置,如果php.ini裡面zlib.output_compression是開啟狀態,則仍然以服務器環境的頁面壓縮方式進行頁面壓縮。
相關代碼只有一行:
if(!ini_get('zlib.output_compression') && C('OUTPUT_ENCODE')) ob_start('ob_gzhandler');
在個別特殊的環境下面,如果出現類似下面的錯誤提示:
output_handler "ob_gzhandler" conflicts with "zlib.output_compression"
一般是由於你的服務器配置了其他的壓縮方式導致沖突,這個時候你可以手動關閉OUTPUT_ENCODE,即:
'OUTPUT_ENCODE'=>false
就可以解決問題。