Evitando caching ao atualizar arquivos CSS
Uma das grandes vantagens de se usar CSS para definir a camada de apresentação (layout) de um site é o fato de que os arquivos
CSS são guardados no cache do browser na primeira vez em que são carregados, evitando assim a necessidade de baixar o arquivo
toda vez que se acessa o site.
Mas isso causa um problema: se você fizer alguma modificação no CSS, o browser só vai baixar a nova versão do arquivo se você der
um reload (F5, em geral). Isso é muito chato e pode “quebrar” totalmente o layout de uma determinada página se forem feitas
modificações também no (X)HTML.
Vejamos como esse problema pode ser resolvido.
Uma solução seria trocar o nome do arquivo CSS. Bom, mas trocar o nome do arquivo não é lá uma solução muito boa. Imagine um site com 100 páginas (X)HTML estáticas. Se você
trocar o nome do arquivo CSS, vai ser obrigado a editar todos os (X)HTML para trocar o nome do CSS no link ou style e
subir todos os arquivos pro servidor. No caso de um site dinâmico com um template para todas as páginas o trabalho seria menor, mas mesmo
assim não é uma solução muito elegante.
Outra solução seria gerar o CSS a partir de um script, por exemplo, PHP. Mas isso está fora de questão já que evitaria o caching
pra sempre, a não ser que você controlasse o caching pelo PHP - o que não é a mais trivial das tarefas.
Diante do problema, ponderei sobre algumas possíveis soluções e a melhor que achei foi fazer uso do
mod_rewrite do apache.
O processo é bem simples. Digamos que você tenha um arquivo chamado estilo.css. Ao atualizá-lo, salve-o como
estilo2.css e use a seguinte regra de reescrita no seu arquivo .htaccess
RewriteEngine On RewriteRule ^estilo.css$ /estilo2.css
Simples e indolor. Agora é só subir os dois arquivos (.htaccess e estilo2.css) para o servidor e pronto, o CSS vai ser atualizado
automaticamente. Feito isso você pode apagar o arquivo estilo.css original.
[update]A técnica do Élcio é bem mais simples, elegante e eficiente. Hoje em dia, é a que uso.[/update]


Rewrite Engine On
Corret:
RewriteEngine On
:o)