IE Over-Caching Information: IE 4.5 for Mac (and 5.0 for Windows) holds on to pages too tightly--here's the only known workaround.
This article has been archived due to outdated information or poor advice. Read on at your own risk.
I'm a web developer over at Refinery (née Image Refinery Productions).
My office has mixed Mac and Windows users. We develop a fair amount of internal, web-based applications.
We're having troubles with IE 4.5 for mac caching (and caching hard) pages which shouldn't be cached.
As a test case, I made two small .asp files that spit out the current date and time, and which link to one another.
- Each file has
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
in the header. - Each page has the ASP command "Response.Expires(0)" in it.
- The server (IIS4 on NT4) has been instructed to expire both pages immediately.
- I've set the Advanced Cache setting to Update Pages Always.
Each one of these commands should each, individually, tell IE that it should never use a cached version of the page. Yet after I visit each page once, using the links between them gives me a cached version of the time. I tried Touching the pages on the server (updating their modification date)--nothing changed. I *deleted* the files from the server. IEMac merrily went on showing them to me. I *shut down* the server. Still, IE let me bounce between them and see the old, cached versions.
Internet Explorer v4.5 for Macintosh has serious trouble with caching pages--if it sees the same URL as it has seen recently, it assumes that the file has not changed and shows you the cached version. It does this regardless of its internal setting of "Update Pages Always", regardless of META tags on the page which tell it not to cache the page, and regardless of HTTP headers returned by the server which tell it not to cache the page.
Of course, Refreshing the pages causes them to update...but this is not acceptable, since this is a problem in deployed solutions, not just during development. As an example, say you have a 2-page site which lets you look at information on employees. Page 1, (choosemployee.asp) lets you choose an employee to browse. Page 2, (employeeinfo.asp) shows you information for that employee. Someone using IE4.5 for the mac may go to page 1, choose Joe Smith, and then go to page 2, which shows Joe Smith's information. The user then returns to page 1 and chooses a different employee. Upon returning to page 2 (through an internal page which updates a Session variable noting which is the current employee), IE4.5 for the mac sees the same URL, does not check with the server, and displays the data for Joe Smith.
I've found that I can FORCE IEMac to not cache the pages by navigating around using post-method forms. But this obviously isn't a valid solution.
The only work-around we've found (and talking with people on the BareBones Software Web Authoring Mailing List, the only solution they too have found) is a gross one, where URLs to each page pass a random, changing parameter to the page with each request, e.g. prototypelist.asp?clientid=43&rnd=2355512314 prototypelist.asp?clientid=43&rnd=2314527721
As long as the url is unique, IEMac realizes that it may not know best, and checks with the server. This is mostly effective, except when there is static, framed navigation which cannot (except by requiring JavaScript) generate a random string each time an anchor is used.
All of my bug reports to Microsoft have gone unanswered, so I thought that (although I far prefer IE over NS for a large number of reasons) it would be wise to get the word out to Mac IT personnel that IE4.5 for Mac has this problem with caching pages.
Followup: according to user-supplied information on The Mac Resource Page, people have found that IE5 for Windows also suffers from these same problems, except that IE5Windows does honor the EXPIRES META tag when the content is set to 0.
Marios
11:33AM ET 2003-Feb-12 |
Hi, I may have a solution for you. Are you using Response.Redirect ? |
Gavin Kistner
03:35PM ET 2003-May-05 |
Marios as you may note from the bottom, this page is now over 3 years old, but...no. This was with pure anchors between the pages that it was tested. |
Gavin Kistner
02:51PM ET 2004-Feb-23 |
You didn't read the article carefully then. Providing a unique query string or using POST prevent the information from being cached. IEMac is a dead/dying browser, anyhow. I wouldn't worry about it. |
Curious Mac User
10:27AM ET 2004-Feb-24 |
I read that part about using a unique query string, and do this already, that is not my issue with the way IEMac works. My issue is having subsequent users access the browser's history and scrolling through the pages that would have cached the previous user's personal information. The unfortunate part about the environment within which I work is that telling people to clear the browser cache is not considered to be an acceptable solution. Although I agree that IEMac is dead, my vocal users do not. |
Gavin Kistner
11:08AM ET 2004-Feb-24 |
Every browser has some form of form caching. Try it in IE6. Try it in Mozilla. Try it in Safari. You'll see that if you back into a form you filled out, most of the time the information will still be there. This isn't the browsers' disk cache, but its memory cache. It's a feature, not a bug :) Just tell users to close the window when they're done. |
Curious Mac User
04:18PM ET 2004-Feb-24 |
In IE and Netscape for Windows, and in Netscape for Mac I can use caching commands that ensure that the page is not accessible in the history files. The only way that the browser can display the page again is to request it from my servers. I can then control what is returned from my servers by using time limited sessions and ensuring that if the session is still current, the personal information is not displayed. I can not do this with IEMac. The browser history contains a copy of the page and the personal information that the user had entered. As mentioned, the client environment in which I work does not allow me to force the user to eliminate the information by clearing the browser cache. Closing the browser window does not correct the situation that I am referring to. |
Curious Mac User
12:01PM ET 2004-Feb-27 |
Is there a solution to this problem? |
TL
01:05AM ET 2005-Mar-11 |
I am having a problem for cacheing in IE 5 I am havving an application which contains link. On clicking the links file is served but i am not saving the file anywhere. But the temprary internet folder contains the file. I use the Meta tags also in all the html and response.setheader also in trhe pages which is actually used for sending bytes. Can anyone help. Tahnks in advance. |
Espen Antonsen
09:53AM ET 2005-May-21 |
This is what we use and we do not have any problems with caching. Client is always retrieving a fresh page. Response.Expires = 0 Response.ExpiresAbsolute = DateAdd("d",-1,now()) Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "no-cache" Espen Antonsen |
Barry
11:25PM ET 2005-May-21 |
Nice timing, Espen! I've been plagued with this problem, but it's only been a minor irritation. However, I have a few hundred consultants placing orders online now, and a few of them have been reporting this problem. Rather than go lookup the various anti-caching settings, I thought I would do a quick search via Google, and I found your post. I gave it a shot and it corrected the problem. Thanks for doing the legwork for me! |
Nadia
07:48PM ET 2005-Oct-27 |
I am working with Intenet Explorer 5 on Mac, the first time I enter I login, but we share it and is very uncomfortable close the browser for reauthenticate, could Logout a user or Log off from authentication website, i found ClearAuthenticationCache command that Clears all authentication credentials from the cache but it says that only Apply IE 6 or later. P.D. The page that we login use IIS integrated authentication |