Voici quelques bouts de code que j'implémente dans les développements que je réalise avec le Zend Framework. Le but de ce code est de supprimer tout ce qui est inutile dans le code HTML
- Les commentaire
- L'indentation
- Les retours à la ligne
Donc le premier truc à faire est de créer un plugin de controller. Dont voici la source :
Si vous débuter avec Zend il faut placer cette classe dans VOTRE_DOSSIER_PROJET/Librairy/My/Controller/Plugin/CompressHtml.php.
class My_Controller_Plugin_CompressHtml extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopShutdown()
{
$response = $this->getResponse();
$body = preg_replace('#(?:(?:(^|>[^<]*?)[\t\s\r\n]*)|(?:[\t\s\r\n]*(<|$)))#', '$1$2',$response->getBody());
$response->setBody($body);
}
}
Je vais pas vous faire un cours sur les expressions régulières. Le seul truc à savoir c'est que ce plugin de controller est appeler tout à la fin du processus de distribution de la requête.
Une fois cette classe créer, il faut la déclarer. Pour celà il faut éditer le fichier VOTRE_DOSSIER_PROJET/application/Bootstrap.php et ajouter les quelques lignes de code suivantes :
Pour ceux qui ce demande ce qu'est le Bootstrap.php ? C'est le fichier contenant la classe d'amorçage de votre application. Tout passe par ce fichier.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
));
Zend_Loader_Autoloader::getInstance()->registerNamespace('My_');
return $autoloader;
}
protected function _initFrontController()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new My_Controller_Plugin_CompressHtml());
return $frontController;
}
public function run()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispatch();
}
}
Voilà ! Normalement si vous avez bien suivit, tout le code HTML de vos pages seras minifié lors du rendu HTML. Alors bien sûr on peut encore améliorer. Par exemple en m'étant en cache le résultat obtenu mais ça sera l'objet d'un autre post.







