Header Ads Widget

HTML minification trong Laravel

Tối ưu hóa HTML, thường giữ rất nhiều khoảng trống theo như coding standard. Tuy nhiên, trình duyệt không quan tâm đến khoảng trắng đó. Vậy nên khi đưa sản phẩm lên production, chúng ta hoàn toàn có thể loại bỏ các khoảng trống này để giảm kích thước file html mà trình duyệt phải download xuống.


HTML minification

Sử dụng middleware để unifying html mỗi khi nhận được request
Tạo middleware
php artisan make:middleware HtmlMifier
<?php
 
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Response;

class HtmlMifier
{
    public function handle($request, Closure $next)
    {
  
        $response = $next($request);

        $contentType = $response->headers->get('Content-Type');
        if (strpos($contentType, 'text/html') !== false) {
            $response->setContent($this->minify($response->getContent()));
        }

        return $response;

    }

    public function minify($input)
    {
        $search = [
            '/\>\s+/s',
            '/\s+</s',
        ];

        $replace = [
            '> ',
            ' <',
        ];

        return preg_replace($search, $replace, $input);
    }
} 

Thêm đoạn dòng phía sau vào mảng: $routeMiddleware

'HtmlMinifier' => \App\Http\Middleware\HtmlMifier::class,

Sau khi thêm middleware vào kernel, chúng ta có thể sử dụng chúng trong route
Route::group(['middleware'=>'HtmlMinifier'], function() {
// CODE HERE
});
Mỗi khi nhận được request dạng text/html thì file html của chúng ta sẽ được minify để giảm thiểu dung lượng mà browser phải download xuống

Nhận xét