Tuesday 29 January 2013

Cache problem when downloading file with same name


If you want to be 100% sure that files you update frequently, always show changes made to them right away... use cache busting. You may even have a member site that you allow members to change their files on. If so they may not see updated changes right away unless you cache bust some files. If you are not able to use PHP to cache bust, you can do the same thing using Javascript.

Browser Cache

Browser caching is used to speed up internet browsing by storing files so people do not re-download files they have already downloaded. If you make a change to a file and somebody has the old version cached for that file name, they will not see your new changes in that file.

A user on the internet has a browser in which they use to surf the web. Under normal browser settings while surfing their browser will cache (store) the files from your web site as they browse. Meaning that if they go to your homepage and they see 5 pictures or a flash file, those files get cached so the next time they come to your homepage those elements do not have to re-download to display. They are served up from the user's browser cache if they are detected there.

Cache Busting Files

Cache Busting a file is when we add a random string or number to the end of a URL that we have defined on our pages or in our code. You should not Cache Bust every single page and file on your web site, just the ones you are going to make frequent changes on and you would like for people to always see the most recent design or version of a file.

On any file of your site that you always want the newest version of an image or any file to show, you can append a random number to the end of the URL... this way it has to download new to the user's browser cache... always showing newest file.Examples of Cache Busting Popular File Types Using PHP

Simply put a question mark [ ? ] and then a random number or string on the end of your URLs to those files

Cache Bust an image file

myPicture.jpg?<?php echo rand(); ?>
Cache Bust a Style Sheet

myStyle.css?<?php echo rand(); ?>
Cache Bust an SWF file

myFlash.swf?<?php echo rand(); ?>
Cache Bust an MP3 file

mySong.mp3?<?php echo rand(); ?>
Cache Bust a Style Sheet

myWholePage.html?<?php echo rand(); ?>