在 Laravel 4.0 中,我使用以下代码来压缩 HTML laravel 的响应输出到浏览器,但是在 Laravel 5 中却无法生效。
App::after(function($request, $response)
{
if($response instanceof Illuminate\Http\Response)
{
$buffer = $response->getContent();
if(strpos($buffer,'<pre>') !== false)
{
$replace = array(
'/<!--[^\[](.*?)[^\]]-->/s' => '',
"/<\?php/" => '<?php ',
"/\r/" => '',
"/>\n</" => '><',
"/>\s+\n</" => '><',
"/>\n\s+</" => '><',
);
}
else
{
$replace = array(
'/<!--[^\[](.*?)[^\]]-->/s' => '',
"/<\?php/" => '<?php ',
"/\n([\S])/" => '$1',
"/\r/" => '',
"/\n/" => '',
"/\t/" => '',
"/ +/" => ' ',
);
}
$buffer = preg_replace(array_keys($replace), array_values($replace), $buffer);
$response->setContent($buffer);
}
});
请问如何在Laravel 5中使此代码生效。
或者,如果有更好的方法来压缩HTML,请提供。提前感谢。
注意:我不希望使用任何Laravel包来压缩HTML,只需要一个简单的代码即可完成工作,而不会影响性能。
pre
元素并不是唯一需要考虑空格的地方,textarea
/input
中和任何元素内部(如果通过CSS进行格式化)都需要考虑。在将输出发送到客户端之前,只需使用 GZip 进行压缩,这比破坏HTML代码本身要有效得多。 - CBroe