plantillas index gratis for descargar ciclo caouecs bootstrap php laravel laravel-5 blade html-compression

php - index - ¿Cómo comprimo HTML en laravel 5?



laravel 5.7 lang es (6)

El código completo es este (con GZip personalizado habilitado):

<?php namespace App/Http/Middleware; use Closure; class OptimizeMiddleware { /** * Handle an incoming request. * * @param /Illuminate/Http/Request $request * @param /Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $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); ini_set(''zlib.output_compression'', ''On''); // If you like to enable GZip, too! return $response; } }

Consulte el inspector de red de su navegador para ver el encabezado Content-Length antes o después de implementar este código.

disfrútala ... :).. .

En Laravel 4.0, uso el siguiente código para comprimir las salidas de respuesta HTML de laravel al navegador, sin embargo, no funciona en larara 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); } });

Por favor, ¿cómo hago este trabajo en Laravel 5.

O

Por favor, proporcione una mejor manera de comprimir HTML en laravel 5 si la hay. Gracias por adelantado.

NB: No deseo usar ningún paquete de laravel para comprimir html, solo necesito un código simple que haga el trabajo sin matar el rendimiento.


Esto es casi una copia de Vahid''s respuesta de Vahid''s pero soluciona dos problemas.

1) Se comprueba si la respuesta es un BinaryFileResponse ya que cualquier intento de modificar este tipo de respuesta generará una Excepción.

2) Se mantuvieron los caracteres de nueva línea, ya que la eliminación completa de las nuevas líneas dará lugar a un código Javascript incorrecto en las líneas con comentarios de una sola línea.

Por ejemplo, el siguiente código

var a; //This is a variable var b; //This will be commented out

Se convertirá

var a; //This is a variable var b; //This will be commented out

Nota: en el momento de esta respuesta no pude conseguir una buena expresión regular para hacer coincidir los comentarios de una sola línea sin complicaciones o, mejor dicho, ignorar las nuevas líneas en solo líneas con un comentario de una sola línea, así que espero una mejor solución.

Aquí está la versión modificada.

<?php namespace App/Http/Middleware; use Closure; class OptimizeMiddleware { /** * Handle an incoming request. * * @param /Illuminate/Http/Request $request * @param /Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); if ($response instanceof /Symfony/Component/HttpFoundation/BinaryFileResponse) { return $response; } else { $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+/" => "/n", "//t/" => '''', "/ +/" => '' '', ); } $buffer = preg_replace(array_keys($replace), array_values($replace), $buffer); $response->setContent($buffer); ini_set(''zlib.output_compression'', ''On''); //enable GZip, too! return $response; } } }


La forma recomendada de hacer esto en Larvel 5 es volver a escribir su función como middleware . Como se indica en los documentos:

..this middleware realizaría su tarea después de que la solicitud maneje la solicitud:

<?php namespace App/Http/Middleware; class AfterMiddleware implements Middleware { public function handle($request, Closure $next) { $response = $next($request); // Perform action return $response; } }


No es una buena solución para minimizar html en middleware, ya que puede gastar mucho tiempo de CPU en él y se ejecuta en cada solicitud.

En su lugar, es mejor usar el paquete htmlmin ( https://github.com/HTMLMin/Laravel-HTMLMin ):

composer require htmlmin/htmlmin php artisan vendor:publish

La reducción de HTML en el nivel de plantilla blade y el almacenamiento en caché en el almacenamiento debería ser mucho más eficaz.


Para facilitar la compresión, construyo mi propio módulo de laravel. Este módulo comprimirá toda la salida html final antes de enviarla al cliente (navegador).

También puede apuntar a múltiples entornos a la vez usando el archivo .env .

Más detalles sobre cómo instalar y configurar se encontrarán aquí.


esta es la mejor manera ... no necesitamos usar paquetes de laravel. Gracias.

<?php namespace App/Http/Middleware; use Closure; class OptimizeMiddleware { /** * Handle an incoming request. * * @param /Illuminate/Http/Request $request * @param /Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $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); ini_set(''zlib.output_compression'', ''On''); // If you like to enable GZip, too! return $response; } }