M
Marc J. Cawood
Flightless Bird
We have a web application running over a WAN on IIS6. Some of our
locations have large latency which results in certain pages, with many
scripts and images, taking up to 20 seconds to load. If we analyse the
traffic with Fiddler we see that 90% of the requests (i.e. 90
requests) are for scripts, images, xsl and CSS which never change.
However the browser (IE7) stubbornly insists on requesting them each
time and sending a "If-Modified-Since" header to which the server
replies with a 304. Sadly this 304 is not accompanied by a Cache-
Control header. However we have set "Cache-Control: max-age=2419200"
on all these resources in IIS and, when the resource is first
requested (i.e. browser cache is cleared), a 200 is sent with the
"Cache-Control" and "Expires" headers correct.
Why does the browser ignore the Expires header initially and always re-
request and confirm?
Is there any way to avoid this needless traffic via IIS or via IE?
locations have large latency which results in certain pages, with many
scripts and images, taking up to 20 seconds to load. If we analyse the
traffic with Fiddler we see that 90% of the requests (i.e. 90
requests) are for scripts, images, xsl and CSS which never change.
However the browser (IE7) stubbornly insists on requesting them each
time and sending a "If-Modified-Since" header to which the server
replies with a 304. Sadly this 304 is not accompanied by a Cache-
Control header. However we have set "Cache-Control: max-age=2419200"
on all these resources in IIS and, when the resource is first
requested (i.e. browser cache is cleared), a 200 is sent with the
"Cache-Control" and "Expires" headers correct.
Why does the browser ignore the Expires header initially and always re-
request and confirm?
Is there any way to avoid this needless traffic via IIS or via IE?