Usuwanie niepotrzebnych znaków z kodu HTML

by Mateusz Tymek — on Zend Framework, PHP

Head's up! This post was written back in 2009 and is very likely to contain outdated information.

Prostym sposobem na ograniczenie transferu jest usunięcie niepotrzebnych białych znaków i komentarzy z kodu HTML. W dokumentacji funkcji ob_start znajduje się bardzo ładny przykład, który możemy przystosować do współpracy z naszą aplikacją.

Dla aplikacji opartej o Zend Framework najlepiej będzie umieścić ten kod w pluginie kontrolera, w metodzie dispatchLoopShutdown().

 

Oto kod kontrolera:

class My_Controller_Plugin_SanitizeOutput extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopShutdown()
    {
        $response = $this->getResponse();

        $search = array(
            '/\>[^\S ]+/s',  //strip whitespaces after tags, except space
            '/[^\S ]+\</s',  //strip whitespaces before tags, except space
            '/(\s)+/s',      // shorten multiple whitespace sequences
            '/<!--.*-->/Uis' // strip comments
        );
        $replace = array(
            '>',
            '<',
            '\\1',
            ''
        );
        $body = preg_replace($search, $replace, $response->getBody());
        $response->setBody($body);
    }

}

Można już włączyć napisany plugin - najlepiej w pliku application.ini:

resources.frontController.plugins.sanitizeOutput = "My_Controller_Plugin_SanitizeOutput"

Efekt? W przypadku mojego bloga kod wysyłany do przeglądarki zmniejszył się z 7 do 6kB, co równa się oszczędności rzędu 15%.


comments powered by Disqus