Respostas:
O html5boilerplate.com inclui um arquivo .htaccess bem comentado, com muitas configurações padrão que você deve considerar. Entre eles estão configurações razoáveis para expirar o conteúdo (expira, tags eletrônicas, ...).
Aqui está a documentação sobre mod_expires .
Observe que os Last-Modified
cabeçalhos são fracos no cache. A preferência atual é usar Cache-Control
cabeçalhos.
O Google tem um bom artigo sobre isso.
Expira e Controle de cache: idade máxima. Eles especificam a "vida útil atualizada" de um recurso, ou seja, o período durante o qual o navegador pode usar o recurso em cache sem verificar se uma nova versão está disponível no servidor da web. Eles são "cabeçalhos de cache fortes" que se aplicam incondicionalmente; ou seja, uma vez definidos e baixados o recurso, o navegador não emitirá nenhuma solicitação GET para o recurso até que a data de validade ou a idade máxima seja atingida.
Última modificação e ETag. Eles especificam alguma característica sobre o recurso que o navegador verifica para determinar se os arquivos são os mesmos. No cabeçalho Última modificação, essa é sempre uma data. No cabeçalho ETag, pode ser qualquer valor que identifique exclusivamente um recurso (versões de arquivo ou hashes de conteúdo são típicos). Last-Modified é um cabeçalho de cache "fraco", em que o navegador aplica uma heurística para determinar se deve buscar o item no cache ou não. (As heurísticas são diferentes entre navegadores diferentes.) No entanto, esses cabeçalhos permitem que o navegador atualize eficientemente seus recursos em cache emitindo solicitações GET condicionais quando o usuário recarrega explicitamente a página. Os GETs condicionais não retornam a resposta completa, a menos que o recurso tenha sido alterado no servidor e, portanto, tenham uma latência menor que os GETs completos.
Eu recomendo o uso de um Cache-Control
ou de Expires
cabeçalhos, conforme necessário, pois são fortes cabeçalhos de cache. Alguns sistemas ignoram as datas da última modificação.
Você pode usar uma ferramenta como curl
ou http://redbot.org para verificar os cabeçalhos.
Last-Modified
cabeçalhos na ausência de outras instruções de armazenamento em cache deixa o período de cache para o cliente HTTP. Se um recurso não tiver sido modificado desde a Last-Modified
data, ele deverá ser considerado novo. Por outro lado, ao usar um cabeçalho Expires
ou, Cache-Control
a origem pode definir um período de atualização explícito.
Expires
é um cabeçalho totalmente inadequado para recursos que não expiram. Alguns recursos podem ser modificados, mas não em alguma data de validade. O ponto do Google é queLast-Modified
requer um GET condicional, enquantoExpires
permite que o cache do navegador ignore o GET por completo.