circusbred 10-16-2004, 01:15 AM I have a dynamically driven external CSS file, which is strictly told not to cache itself, yet Safari thinks it is a good idea to indeed cache that file. Yes, this is the example from php.net :)
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
The css file still caches in Safari when linked! However, if I head on over the the dynamic css file directly, it doesn't cache.
Is my only real solution here inline styles or can Safari be beaten into submission?
gsnedders 10-16-2004, 01:20 AM Strange, never had any problems myself... Try removing the no-cache code for Safari, yet keep it there for all other browsers.
circusbred 10-16-2004, 01:54 AM Quick Example:
http://beta.circusbred.com/wtf.htm
wtf.php source:<?php
header("Content-Type: text/css");
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
$color = array (1 => "#cce", "#cee", "#ccc", "#eee", "#ece", "#eec", "#ecc");
$x = rand(1, 7);
echo '
#box {
background-color:'.$color[$x].';
top:50px;
height:250px;
border: 1px dashed #000;
padding:50px;
width:500px;
position:absolute;
left:50%;
margin-left:-250px;
}';
?>
EDIT #1: As you notice, Safari will cache the CSS file & the box will stay the same color unless you hit REFRESH.
EDIT #2: I tried removing no-cache, still the same problem.
hemebond 10-16-2004, 01:54 AM Why don't you want the file cached?
circusbred 10-16-2004, 01:58 AM Because it changes depending upon certain variables... which is what makes the style sheet dynamic, which is why it cannot be cached.
gsnedders 10-16-2004, 02:18 AM Everytime I click the link it changes... You using 1.0?
circusbred 10-16-2004, 02:47 AM Hehe. I suppose I should have stated the version...
1.0 (v85) for 10.2.8
Good to know that it was fixed though.
hemebond 10-16-2004, 03:50 AM Why don't you just put the CSS into a style block inside the document head?
gsnedders 10-16-2004, 12:57 PM Good to know that it was fixed though.
Heh... about everything except some more advance XML stuff was fixed ;)
Why don't you just put the CSS into a style block inside the document head?
Bandwidth.
hemebond 10-17-2004, 11:01 PM How is making the browser send another seperate HTTP request for the file going to save you bandwidth?
gsnedders 10-18-2004, 08:04 PM How is making the browser send another seperate HTTP request for the file going to save you bandwidth?
Because I'm an idiot.
brothercake 10-21-2004, 01:21 AM But there's no good way to "hide" <style> contents from legacy browsers - using an external file is the right way.
hemebond 10-21-2004, 05:13 AM Does<link rel="stylesheet" type="text/css" href="/css/index.css" media="screen,projector">not hide it from old browsers? Plus, if you want to hide your stylesheets from certain browsers, you should use a server-side language to blacklist them, and not serve them the style.
brothercake 10-21-2004, 06:09 AM Yeah it does - exactly. Putting it in a <style> block in the head does not.
hemebond 10-21-2004, 06:55 AM What about:<style type="text/css" media="screen,projector"></style>
circusbred 10-21-2004, 07:11 AM Besides, I would rather have them download a 0.45 KB than a 5-10KB file every time.
brothercake 10-21-2004, 07:18 AM What about:<style type="text/css" media="screen,projector"></style>
What about it?
The point is that a browser which doesn't understand the element will render its contents as literal text, which is why procedural code inside any HTML element should be avoided - this means <style> and <script>
hemebond 10-21-2004, 10:35 PM I have yet to find a browser that renders the head element or any of its children without explicit instructions.
brothercake 10-22-2004, 02:03 AM What about Netscape 3 or Mosaic? They both do exactly that, and whether you think it's right or not, people are still using these ancient browsers.
|
|