Como Konerak disse que você pode usar o mod_expires, para habilitá-lo em um shell faça:
# for ubuntu
sudo a2enmod expires
sudo service apache2 restart
# or, for other distros as root:
a2enmod expires
/etc/init.d/apache2 restart
/etc/init.d/httpd restart
aqui está uma configuração de vhost que certamente se ajustaria às suas necessidades:
<VirtualHost *:80>
[...]
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/x-icon "access plus 30 days"
ExpiresByType image/ico "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
ExpiresByType application/x-javascript "access plus 30 days"
ExpiresByType text/javascript "access plus 30 days"
[...]
</VirtualHost>
Tudo o mais não deve ser armazenado em cache.
O script é um extrato da minha configuração para o meu site no link , você pode ver que ele armazena apenas imagens em cache. (O cache Javascript não está ativado).
Documentação: link