@Emilio
No alcanzo a entender bien el sistema que implementas, yo trabajo con lo siguiente y me funciona correctamente
Código Apache:
Ver original#### Cache
# anual
<FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|woff|eot|svg|ttf|flv|swf)$">
Header set Cache-Control "public, max-age=29030400"
</FilesMatch>
# semanal
<FilesMatch "\.(js|css|htc)$">
Header set Cache-Control "max-age=604800,public,must-revalidate"
</FilesMatch>
# 3 horas
<FilesMatch "\.(php|html|htm|txt|html5)$">
Header set Cache-Control "max-age=10800,public, proxy-revalidate, no-transform"
</FilesMatch>
# no cachear
<FilesMatch "\.(pl|cgi|spl)$">
Header unset Cache-Control
Header unset Expires
Header unset Last-Modified
FileETag None
Header unset Pragma
</FilesMatch>
Modificá los tiempos y extensiones según tu criterio. Los valores que puse son solo un ejemplo.
Para verificar te recomiendo el siguiente método, en firefox, eliminá todo el historial, después cargá la página, en una nueva pestaña abri "about
:cache" y fijate si las fechas de expiración coinciden con tus directivas
Saludos