I am using .htaccess code like
<IfModule mod_headers.c>
<FilesMatch "\.(gif|jpg|png|css|swf|php)$">
Header add "Expires" "Mon, 28 Jul 2014 23:30:00 GMT"
Header add "Cache-Control" "max-age=31536000"
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType application/x-shockwave-flash A604800
</IfModule>
The problem is that it still checks the server if the file has been modified and then returns 304 Not Modified. I want it to use cache by default i.e. the local browser cache and not make a round trip to the server at all.
Any suggestions?
You can't force a client to do what you want. All things given in your configuration are "optional recommendations" for a client. You only have control over the server and have no influence on the client's behavior even if you give them advices.