@ chedine,
Кэшированные в браузере файлы не должны возвращать 304, они должны возвращать 200. Вы должны использовать mod_expires, чтобы установить максимальный возраст, и mod_headers, чтобы установить заголовки Cache-Control.,Вот пример, который возвращает действительный ответ 200 для кэшированных статических файлов браузера:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css M5184000
ExpiresByType application/x-javascript M5184000
ExpiresByType text/html M1200
ExpiresByType text/plain M1200
ExpiresByType image/gif M31536000
ExpiresByType application/x-gzip M31536000
ExpiresByType image/x-icon M31536000
ExpiresByType image/jpeg M31536000
ExpiresByType image/png M31536000
</IfModule>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
<IfModule mod_headers.c>
Header set Vary "Accept-Encoding, Cookie"
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
</FilesMatch>