Otimizando Javascript e CSS da aplicação
setembro 22, 2010 at 5:39 pm 2 comentários
Andei pesquisando ultimamente sobre otimização de aplicações e web e encontrei algo que merece ser publicado, a redução do código Javascript e CSS. A idéia é transformar o código:
/*
Método que atualiza o valor de algum
atributo passado como parametro
*/
function updateField( field, value )
{
//arqui entraria um comentário
field.value = value;
window.close();
/* aqui vem outro
só que de bloco
*/
}
Para:
function updateField(b,a){b.value=a;window.close()};
Esse pequeno pedaço de código já mostra uma diferença significativa, imagina agora para aqueles arquivos javascript enormes com todas as funções do seu sistema?
Se parar para analisar, os javascript que são fornecidos para Ajax, JQuery e coisas do gênero também fazem isso.
O Yahoo disponibiliza um jar (http://yuilibrary.com/downloads/#yuicompressor) que faz isso automático. Basta executar a linha de comando: java -jar yuicompressor-x.y.z.jar “nomeDoArquvo.js”, assim ele vai gerar na saída padrão o código reduzido. Com o parâmetro -o você escolhe o nome do novo arquivo a ser gerado.
Um problema de fazer isso durante o desenvolvimento é que se você precisar dar manutenção no código, esquece. Para resolver esse novo problema, eu fiz uma manutenção na target do build.xml que gera o EAR da aplicação. Ele faz um backup dos javascript, reduz todos os códigos e depois de gerar o WAR ele restaura os javascripts anteriores.
<!-- fazer o backup dos javascripts -->
<echo message="Criando a pasta de backup dos javascripts" />
<mkdir dir="${web.root.dir}/javascriptBackup" />
<echo message="Copiando os javascripts" />
<copy todir="${web.root.dir}/javascriptBackup">
<fileset dir="${web.root.dir}/javascript/" />
</copy>
<!-- Minizando os javascripts -->
<echo message="Minimizando os javascripts" />
<taskdef name="for" classname="net.sf.antcontrib.logic.For" />
<for param="file">
<path>
<fileset dir="${web.root.dir}\javascript\" includes="*.js" />
</path>
<sequential>
<apply executable="java" parallel="false">
<fileset file="@{file}" />
<arg line="-jar" />
<arg line="ignorelib\yuicompressor-2.4.2.jar" />
<arg line="-o" />
<arg line="'@{file}'" />
<arg line="'@{file}'" />
</apply>
</sequential>
</for>
<!-- Gerando o WAR ou EAR -->
<jar destfile="${build.result.folder}/${full.name}">
<fileset dir="${web.root.dir}" includes="**/*.*" excludes="WEB-INF/classes/**/*.*" />
<fileset dir="${web.root.dir}/../temp.folder" includes="**" />
<manifest>
<attribute name="Class-Path" value="${manifest.classpath}" />
</manifest>
</jar>
<!-- Voltando o backup -->
<copy todir="${web.root.dir}/javascript" overwrite="true">
<fileset dir="${web.root.dir}/javascriptBackup/" />
</copy>
<!-- Apagando o backup -->
<delete dir="${web.root.dir}/javascriptBackup/" />
Aqui só citei o caso do javascript, mas o CSS é da mesma forma.
[]‘s
Entry filed under: javascript, otimizacao. Tags: css, javascript, minify, otimização, YUI Compressor.
2 Comentários Add your own
Deixe uma resposta
Enviar trackback para este post | Subscribe to the comments via RSS Feed
1.
Thiago Montovaneli | setembro 22, 2010 às 7:47 pm
O ganho em utilizar esse mecanismo, seria diminuir o tamanho total da página?
2.
ovictorpinto | setembro 22, 2010 às 7:50 pm
Sim. Diminui o tamanho do arquivo javascript/css enviado pelo servidor. É bem comum o javascript ficar guardado no cache do navegador, mas quando não cai no cache isso ajuda bastante.