Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

P3rukao

[Resolvido] CakePHP e Minify

Recommended Posts

Descobri a pouco tempo um helper do Minify para o CakePHP que faz a compactação do CSS e Javascript para reduzir o número de requests ao servidor. Depois de algum tempo pesquisando eu consegui fazer funcionar, porém todo link para imagens feito no css{ background:url('../img/imagem.jpg'); } parece ser reescrito e as imagens não são carregadas para o layout.

 

A instrução de uso e arquivos necessários podem ser encontrados aqui: http://blog.innovatechnologies.in/2011/2/Cakephp-helper-to-minify-javascript-and-css-assets e aqui: https://github.com/ketanshah79/cakephp/blob/master/cakephp/helper/minify.php

 

Alguém tem idéia de como fazer pra resolver esse "problema"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema!! O erro não estava nos Helpers, mas sim no próprio Minify. É porque ele reescreve as urls automaticamente, mas com uma linha no arquivo deconfiguração isso se resolve:

$min_serveOptions['rewriteCssUris'] = false; 

Pronto, com isso, o minify funciona perfeitamente na sua página.

 

Links de referência:

http://code.google.com/p/minify/wiki/UriRewriting e

http://stackoverflow.com/questions/7053223/fixing-google-minify-css-url-screwup

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica para quem está procurando optimizar as páginas:

 

No lugar de utilizar o sistema padrão do CAkePHP para enviar os estilos e scripts para a variável $scripts_for_layout, você pode dividir os arquivos CSS e JS utilizados em cada view individualmente e setar o nome dos arquivos pelo controller.

 

clientes_controller.php

<?php
class ClientesController extends AppController {
var $name = 'Clientes';

function index(){
   // código da sua action

	$css_for_layout = array('contato_index','formularios');
	$js_for_layout = array('contato_index');
	$title_for_layout = "Fale conosco";

	$this->set(compact('title_for_layout','css_for_layout','js_for_layout'));
}//end function login()

}//end class

 

E no seu layout você põe: (default.ctp)

$estilos = array('reseter_v2','comum_a_todos','jquery.pnotify.default');

if(isset($css_for_layout) && !empty($css_for_layout)){
	$estilos = array_merge($estilos,$css_for_layout); // Carrega os estilos específicos de cada página
}
echo $minify->css($estilos);

 

Assim você reduz a quantidade de coisa a ser carregada pelo site de uma só vez e ainda desfruta das vantagens do Minify, como: compactação e junção dos arquivos.

 

Fica aí a dica. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.