Saturday
28
November
autor:
Mateusz Tymek
kategorie:

Usuwanie niepotrzebnych znaków z kodu HTML

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%.

 
Tagi: tidy, zend_controller_plugin, html
Komentarze
Tomasz Kowalczyk 23 March 2010
Ooo... tego kawałka kodu jeszcze nie widziałem - dzięki. ;]
Skomentuj artykuł

Nazwa użytkownika powinna składać się z conajmniej pięciu liter, cyfr i znaków podkreślenia. Powinna zaczynać się od litery.

Pole wymagane.
Adres e-mail nie zostanie pokazany publicznie.