Siguiendo lo indicado por @maycoalvarez, hacerlo a traves del servidor, es la forma más indicada.
En el caso de Apache en particular, los módulos Expires y Headers, te van a permitir manejar como, que y durante cuanto tiempo cachear los diferentes componentes de tu web
Un ejemplo básico
Para cachear todas mis imágenes, multimedia y archivos de fuentes durante 1 año
Si lo haces con mod_headers (por extension de archivo)
Código Apache:
Ver original<IfModule mod_headers.c>
<FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|woff|eot|svg|ttf|flv|swf)$">
Header set Cache-Control "public, max-age=29030400"
</FilesMatch>
</IfModule>
Si lo haces con mode_expires y para diferentes fechas de expiración ,algo asi (por tipo de contenido)
Código Apache:
Ver original<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A86400
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A900
</IfModule>
Los valores estan expresados en segundos (29030400 = 1 año)
Estos dos módulos no vienen habilitados por defecto en la instalación de Apache, pero dificilmente los proveedores de hosting actual, no tengan habilitado uno de ellos.
Una guía definitiva al tema, com ejemplos mucho más complejos en
http://www.askapache.com/htaccess/sp...s-caching.html
Saludos