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