Page 1 of 1

ensuring a page is not stored in cache

Posted: Tue Sep 13, 2016 2:24 pm
by bowlesj
Hi, is there a switch somewhere that can be set to ensure a page does not get stored in cache on the user's machine so I don't have to tell them to press F5 to be sure they have the latest data. I was thinking of putting the code in javascript to simulate the user pressing F5 (do a reload) and such that it does it once only but it would be better if I could avoid that one extra flash on the page if possible. It seems to be a big issue that a lot of people have concerns about so I figured you might have come up with something. I tried pocking around but did not see anything.

Thanks,
John

Re: ensuring a page is not stored in cache

Posted: Tue Sep 13, 2016 2:25 pm
by Pablo
You can try this:

Code: Select all

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

Re: ensuring a page is not stored in cache

Posted: Tue Sep 13, 2016 2:45 pm
by bowlesj
Thanks Pablo,
John

Re: ensuring a page is not stored in cache

Posted: Fri Sep 16, 2016 10:12 am
by bowlesj
The code above eventually showed it did not work so I put the code below in last night. The code does put the # at the end of the URL so that much is working and it happens so fast I can't see it occurring so that is good. I will find out after a day or two if my daily test updates actually get drawn in so users can see them without having to press F5. If this one does not work I have a few others I found on the web that I can try.

Code: Select all

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />

<script>
function funcOnloadProcessing() {

   //START: code to force an F5 refresh
   $(document).ready(function(){    
       //Check if the current URL contains '#'
       if(document.URL.indexOf("#")==-1){
           // Set the URL to whatever it was plus "#".
           url = document.URL+"#";
           location = "#";
   
           //Reload the page
           location.reload(true);
       }
   });
   //END: code to force an F5 refresh

}
</script>

Re: ensuring a page is not stored in cache

Posted: Fri Sep 16, 2016 10:19 am
by BaconFries
Note that the example you have shown uses javascript/jquery which is ok in its own right but if the user has disabled this in the browser then it simply wont run. So if any code that you find that uses javascript/jquery means your pages will still be cached on the endusers PC.

Re: ensuring a page is not stored in cache

Posted: Fri Sep 16, 2016 10:52 am
by bowlesj
Hi BaconFries, thanks for reminding me. I just double checked my page and I do have that concerned covered off with this code. John

Code: Select all

<noscript>
<p>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
This website will not run properly without javascript enabled. Please enable javascript and try again.<br>
</p>
<style>
/* This CSS code is to make your layer hidden when it first goes out */
#AdvancedButton_Login {  
    display:none
}
#Form_Register {  
    display:none
}
</style>
</noscript>

Re: ensuring a page is not stored in cache

Posted: Fri Oct 07, 2016 4:37 pm
by bowlesj
I was still struggling with this issue in that I did not like the javascript double read of the php code. So I did more research and I found what appears to be the solution to Pablo's very first suggestion. I posted this info to another thread and copied it below.
=================================
Regarding the question I have, I came up with a simple google search "how to stop web page caching". If found the page below.
http://www.htmlgoodies.com/beyond/refer ... he-Huh.htm
He mentioned two of the commands I was using the first time around and explained why they do not work.
He seems to have researched it fairly well so I am going to try this for a few days to see if it ever fails.

Also this worked well to clear the cache of the pages for my webiste so I can see if they are getting in cache now by using the chrome://cache/ command
http://superuser.com/questions/278948/c ... -in-chrome
Here is the useful extracted item from the above link:
Open up a page on the website you want to clear the pages for.
in google chrome just left of the URL box click on the "reload page" button but hold it until you see a little menu of three or so items.
From the popup list, choose "Empty Cache and Hard Reload".
Not sure this clears the cache for the entire domain. But probably satisfies 90% of the use cases of people that visit this SE question.
Note: In some cases this will NOT open the popup list. This is because the page isn't cached at that time, so the menu is not invoked.

These instructions from Google actually worked for clearing the pages from google chrome cache so I can test the new html code:
Open Chrome.
On your browser toolbar, click More More.
Point to More tools, and then click Clear browsing data.
In the "Clear browsing data" box, click the checkboxes for Cookies and other site and plug-in data and Cached images and files.
Use the menu at the top to select the amount of data that you want to delete. Choose beginning of time to delete everything.
Click Clear browsing data.

This has a lot of info.
http://stackoverflow.com/questions/4954 ... l-browsers

Re: ensuring a page is not stored in cache

Posted: Mon Oct 10, 2016 10:31 pm
by bowlesj
I finally got this to work for both Chrome and Firefox (that is all I care about at this point at least). It was not easy. I worked at 26 page change test to test this. Firefox would not work until I put in "must-revalidate" but Chrome would work without this.. Chrome would not work if I had them out of sequence. What this does is force the browsers to check the server every single time to see if the page has changed so I can be sure the user is getting the most recent update.

Code: Select all

<meta http-equiv="cache-control" content="no-cache, public, max-age=86400, must-revalidate">
<meta http-equiv="expires" content="0">
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT">
<meta http-equiv="pragma" content="no-cache">
And this also works on both Chrome and Firefox to set the max-age to 7 days. However the 7 days part is assumed okay. Only the 26 change tests were done.

Code: Select all

<meta http-equiv="cache-control" content="no-cache, public, max-age=604800, must-revalidate">
<meta http-equiv="expires" content="Tue, 01 Jan 2099 1:00:00 GMT">
<meta http-equiv="pragma" content="no-cache">
Lastly the web hosting company tweaked the etag flags a bit at the server end. This may have helped. However the Firefox still needed the in "must-revalidate" before it worked.

Re: ensuring a page is not stored in cache

Posted: Mon Oct 17, 2016 9:09 am
by bowlesj
The last set of meta statements failed on chrome about 3 days later so I simplified the statement to the statement below and it has been working as per the tests below.
<meta http-equiv="cache-control" content="no-cache, public, max-age=0, must-revalidate">

16 tests per browser.
2016/Oct/12 Chrome failed, Firefox passed. (because chrome failed I simplified the meta statement to have a single line and an expires of zero)
2016/Oct/12 Chrome passed, Firefox passed.
2016/Oct/13 Chrome passed, Firefox passed - Chrome passed, Firefox passed.
2016/Oct/14 Chrome passed, Firefox passed - Chrome passed, Firefox passed.
2 days without tests
2016/Oct/17 Chrome passed, Firefox passed - Chrome passed, Firefox passed.

Re: ensuring a page is not stored in cache

Posted: Wed Oct 19, 2016 4:56 pm
by bowlesj
Sadly Chrome just failed repeatedly while Firefox continues to work flawlessly. After reloading two pages on Chrome it started to work during my test. It seems every few days Chrome fails then it starts working again for a few days. The web pages are ultra simple and except for my test changes the webpages are exactly the same. I see no reason to beat my head against a wall trying things when FireFox works flawlessly so I have sent two messages to Chrome support telling then that Firefox works flawlessly while their browser fails every so often (I sent the actual full page too). I also told them I am going to tell my users exactly what is happening and advise them to use Firefox. Hopefully that will get their attention.

Re: ensuring a page is not stored in cache

Posted: Tue Jan 17, 2017 12:44 am
by bowlesj
I finally got back to this issue and tried the .htaccess code below with Google Chrome. It works. I did 10 days of tests with 12 tests a day for 120 tests in total. I stripped out all the other code.

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

Re: ensuring a page is not stored in cache

Posted: Tue Feb 19, 2019 6:23 am
by quang-GTI
Pablo wrote: Tue Sep 13, 2016 2:25 pm You can try this:

Code: Select all

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Dear Pablo
Could you please advice show to use this code? where can I insert it into my webpage?
Thanks and Regards
Quang

Re: ensuring a page is not stored in cache

Posted: Tue Feb 19, 2019 6:39 am
by BaconFries
Could you please advice show to use this code? where can I insert it into my webpage?

Page Properties and inserting into Meta Tags>Meta Tags>User Define"