我正在实施干预包来动态调整我网站中的图像大小。它工作得很好,我很满意。这是我如何做的一个例子:
Route::get('images/ads/{width}-{ad_image}-{permalink}.{format}', function($width, $image, $permalink, $format)
{
$img = Image::make($image->path)
->resize($width, null, function($constraint){
$constraint->aspectRatio();
});
return $img->response($format);
});
最近,我想通过中间件自动压缩我的视图来加快我的网站加载速度:
class HTMLminify
{
public function handle($request, Closure $next) {
$response = $next($request);
$content = $response->getContent();
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\\1'
);
$buffer = preg_replace($search, $replace, $content);
return $response->setContent($buffer);
}
}
然后噩梦来了。浏览器报告干预处理的图像现在被“截断”并且不会显示。关闭中间件可以毫无问题地显示图像。
据我从 HTMLminify 类的代码中可以看出,它修改了从视图生成的输出并删除了空格,并且看不出它会如何干扰图像的任何原因。
有什么想法吗,伙计们?
先谢谢了。