¿Hay algún archivo en magento donde se mostrarán todos los html?Magento: ¿Minificar la salida de HTML?
Quiero minificar toda la salida de html.
¿Hay algún archivo en magento donde se mostrarán todos los html?Magento: ¿Minificar la salida de HTML?
Quiero minificar toda la salida de html.
siempre puede usar las funciones ob para obtener la salida en index.php y luego haga con el contenido lo que necesite. pero dudo si aumentará tu sitio tanto como habilitar gzip o desinflar
No debe editar 'index.php'. – Simon
@Simon, que dice que tiene que editar index.php para eso, aunque puede hacer lo que desee siempre y cuando sea el propietario del código y asuma la responsabilidad de cualquier edición realizada –
Err ... Esto es exactamente lo que su la respuesta sugiere Y no, en mi humilde opinión nunca deberías editar el núcleo. Nunca jamás. – Simon
¿Tal vez mod_pagespeed de Google? Eso lo haría de manera transparente para usted. +1 para gzip y desinflar de cualquier manera.
mod_pagespeed fue creado para este tipo de situación. Sin embargo, sigue funcionando en cada solicitud. – clockworkgeek
Eso es muy cierto, y me gusta la idea de aprovechar el almacenamiento en caché de toda la página como un ahorro de tiempo. ¿Tiene una idea de cuánto tiempo toma la deflación de HTML mod_pagespeed? No tengo idea de cuán significativo sería este problema. –
Como es un código nativo, debe ser más rápido que una versión con guiones. Hay otras opciones de almacenamiento en caché, mod_disk_cache y mod_mem_cache, por supuesto, aunque no estoy seguro de si se crean instancias después de mod_pagespeed, o podría utilizar un proxy inverso. Esos tipos de opciones de almacenamiento en caché generalmente requieren Caducar y Variar encabezados que Magento no establece por lo que su utilidad puede ser limitada. Básicamente, no sé, solo una herramienta de perfil de depuración podría decirte. – clockworkgeek
Lo ideal es que desee realizar una minificación antes de que la salida se guarde en la memoria caché para evitar hacerlo con demasiada frecuencia. El mejor lugar que puedo pensar es anulando Mage_Page_Block_Html
y añadiendo la siguiente función para la nueva clase:
protected function _toHtml()
{
$html = parent::_toHtml();
// MINIFY CONTENTS OF $html HERE
return $html;
}
De esta manera se realiza la acción de una vez por toda la página, el valor devuelto a continuación, puede ser almacenado en caché por Magento en es la manera usual. No funciona individualmente en cada bloque, lo que podría ser menos eficiente.
Magento usa un objeto de respuesta para enviar todos los resultados.
Todos los resultados se agregan a este objeto, y luego se llama a su método sendResponse
.
Si desea modificar la impresión, la configuración de un detector para el evento http_response_send_before
<!-- in your module's config.xml -->
<http_response_send_before>
<observers>
<unique_name>
<type>singleton</type>
<class>group/observer</class>
<method>alterOutput</method>
</unique_name>
</observers>
</http_response_send_before>
Y luego, en el observador puede obtener y establecer el cuerpo
class Packagename_Modulename_Model_Observer
{
public function alterOutput($observer)
{
$response = $observer->getResponse();
$html = $response->getBody();
//modify html here
$response->setBody($html);
}
}
Si está interesado , este evento se llama en el método sendResponse
de la siguiente clase
app/code/core/Mage/Core/Controller/Response/Http.php
y la salida del mismo se envía en las sendResponse
y outputBody
métodos de
lib/Zend/Controller/Response/Abstract.php
excelente respuesta como de costumbre –
He utilizado el código anterior, pero parece que no funciona con el almacenamiento en caché de página completa :( –
Tal vez alguien que viene aquí puede encontrar este Magento extensión útil: http://www.magentocommerce.com/magento-connect/html-minify-by-jemoon.html
Buena pregunta, 1, pero ¿qué quiere minify HTML ? –