PHP-CI - 壓縮輸出網頁原始碼
這個問題,終於到我有空閒的時候,開始找尋相關的文章資料,
因為常看到為什麼有人的網頁原始碼可以亂的沒排版,實在太讓我好奇了,
所以我google一下,原來有作法,
https://php.quicoto.com/how-to-speed-up-codeigniter/
他原本的用意是想加快網頁輸出速度,將一堆不必要的空白、斷行,全部都濃縮成一行輸出,
(實在太神奇了傑克)
我照著做,的確能成功,我使用的是PHP CodeIgniter,
第一步,先在application/config/config.php 將 enable_hooks開啟
$config['enable_hooks'] = TRUE;
第二步,application/config/hooks.php 撰寫以下程式碼
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
| -------------------------------------------------------------------------
| Hooks
| -------------------------------------------------------------------------
| This file lets you define "hooks" to extend CI without hacking the core
| files. Please see the user guide for info:
|
| https://codeigniter.com/user_guide/general/hooks.html
|
*/
$hook['display_override'][] = array(
'class' => '',
'function' => 'compress',
'filename' => 'compress.php',
'filepath' => 'hooks'
);
?>
第三步,在application/hooks資料夾底下,建立compress.php
<?php
$CI =& get_instance();
$buffer = $CI->output->get_output();
$search = array(
'/\>[^\S ]+/s',
'/[^\S ]+\</s',
'/(\s)+/s', // shorten multiple whitespace sequences
'#(?://)?<!\[CDATA\[(.*?)(?://)?\]\]>#s' //leave CDATA alone
);
$replace = array(
'>',
'<',
'\\1',
"//<![CDATA[\n".'\1'."\n//]]>"
);
$buffer = preg_replace($search, $replace, $buffer);
$CI->output->set_output($buffer);
$CI->output->_display();
?>
這三步做完,就可以完成如下這樣亂七八糟的原始碼輸出
<!DOCTYPE html><html lang="zh-Hant-TW"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Tom Lai Tools</title> <!-- Bootstrap --> <link
文章則有如何做Cache(如果有些資料非常頻繁使用的話)
可以使用
$this->output->cache(60);
及如何開啟Gzip輸出(但這個用了之後,我大概程式碼都不能輸出)
$config['compress_output'] = TRUE;