Home > php > CakePHP: abilitare la compressione dei css con csspp

CakePHP: abilitare la compressione dei css con csspp

16 gennaio 2011 No Comments

Per ridurre il tempo e la banda necessaria al caricamento dei css è possibile comprimere i css con degli script php che intervengono prima dell’invio del file al browser.
Con poche modifiche è possibile automatizzare l’operazione per le applicazioni sviluppate in CakePHP.
La versione di cake utilizzata per il test è la 1.3.6.

1) Nel file /app/config/core.php decommentare la riga:

Configure::write('Asset.filter.css', 'css.php');

2) Scaricare il file csspp.php da https://github.com/jeremyboles/csspp e copiarlo nella directory /app/vendors/csspp/

3) Sostituire la funzione make_clean_css() del file /app/webroot/css.php con la seguente:

	function make_clean_css($path, $name) {
		App::import('Vendor', 'csspp' . DS . 'csspp');
		$data = file_get_contents($path);
		$name = str_replace('/',DS,$name);
		$name = str_replace('\\',DS,$name);
		$csspp = new csspp($name,CAKE_CORE_INCLUDE_PATH.DS.APP_DIR.DS.WEBROOT_DIR.DS);
		$output = $csspp->process($data);
		$ratio = 100 - (round(strlen($output) / strlen($data), 3) * 100);
		$output = " /* file: $name, ratio: $ratio% */ " . $output;
		return $output;
	}

Utilizzando l’helper html per caricare i css:


echo $this->Html->css(array('admin/layout'), null, array('inline'=>true));

l’output sarà automaticamente compresso; se non si utilizza l’helper sarà sufficiente richiamare i files css con il prefisso /ccss/ invece del prefisso standard /css/.

Lo script inoltre crea un file di cache nella cartella /app/tmp/cache/css che viene aggiornato quando si modifica il file css principale.

Tags: cakephp css php

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>