How to disable caching using the .htaccess file

There are times when you must disable caching of your website files. You would want to stop it by letting any browser accessing your site know that it should not cache the files. The best way to do this is to use directives written in the .htaccess file. As we are using the Apache server there are a couple ways of adding these commands in the .htaccess file. It may depend on the software you are using to display your website. If you are unsure, then you should speak with a developer to be sure.

Conditions for Disabling Caching

Some conditions for not wanting caching on a viewer’s internet browser include:

  • Constantly updated data that you do not want to be cached (e.g. stock ticker)
  • Caching structures that you prefer to use on your server
  • Pages requiring login verification that include updates that change regularly

.htaccess Code for Disabling Caching

There are a few different versions of code that you can add to disable cache. We have provided two examples of code that you can use in the .htaccess file to disable caching. The older version identifies the file types that you do not want to be cached. The newer version which uses cache-control to use in .htaccess. Please feel free to look at the code and use it in your .htaccess file to disable caching if necessary.

Things to consider when adding the code to .htaccess

Remember that .htaccess files are read from top to bottom, so if you want these directives to occur before something else, then they should be placed higher within your .htaccess file. Bear in mind that there may be multiple .htaccess files and that .htaccess files placed above another in a directory will have precedence over the one placed in a sub-directory.

Examples of the code used to disable caching

Example #1:

 <FilesMatch "\.(css|flv|gif|htm|html|ico|jpe|jpeg|jpg|js|mp3|mp4|png|pdf|swf|txt)$"> 	<IfModule mod_expires.c> 		ExpiresActive Off 	</IfModule> 	<IfModule mod_headers.c> 		FileETag None 		Header unset ETag 		Header unset Pragma 		Header unset Cache-Control 		Header unset Last-Modified 		Header set Pragma "no-cache" 		Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 		Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT" 	</IfModule> </FilesMatch> 

Example# 2

 # DISABLE CACHING <IfModule mod_headers.c> 	Header set Cache-Control "no-cache, no-store, must-revalidate" 	Header set Pragma "no-cache" 	Header set Expires 0 </IfModule> 

This completes the tutorial on disabling caching using the .htaccess files. For more information on the .htaccess file, please see Where is my .htaccess File?

Arnel Custodio Technical Writer; WordPress Contributor & Volunteer

As a writer for InMotion Hosting, Arnel has always aimed to share helpful information and provide knowledge that will help solve problems and aid in achieving goals. He's also been active with WordPress local community groups and events since 2004.

More Articles by Arnel

Thoughts on “How to disable caching using the .htaccess file

  • hi
    my all php files have these headers :
    cache-control: no-store, no-cache, must-revalidate
    i tried to make one of my php files cache-able but i ended with this :

    cache-control: no-store, no-cache, must-revalidate
    cache-control: max-age=100, private

    why i’m having two cache-control ?!

    the code i used :

    Header unset Cache-Control
    Header set Cache-Control “max-age=100, private”


    • If your .htaccess file contains anything that you believe should not be there, you may want to check with any developers or administrators who have worked on your site.

    • The differences are explained in the text of the article. Both have the same effect. It depends on what you’re trying to do. I’d advise trying both.

Was this article helpful? Let us know!