This article was previously published under Q293099
This article has been archived. It is offered "as is" and will no longer be updated.
After an Extensible Markup Language (XML) or Extensible Stylesheet Language (XSL) document has been cached on a client computer, subsequent requests to use the file may result in an unnecessary "If-Modified-Since" GET request to the server if the file has not expired. These extra requests slow down the performance of high-scaled servers and large applications.
This occurs because of a problem in the Msxml.dll file.
To resolve this problem, install Microsoft XML (MSXML) Parser version 3.0 or later, and use the XmlInst.exe tool to install MSXML 3.0 in Replace mode. When you run XmlInst.exe to install MSXML 3.0 in Replace mode, all application references (including those for Internet Explorer) are remapped to point to MSXML 3.0. If you do not install MSXML 3.0 in Replace mode, Internet Explorer continues to use MSXML.dll instead of MSXML3.dll, and the problem continually recurs.
You can download MSXML Parser version 3.0 from the following Microsoft Web site:
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.This bug was corrected in MSXML Parser version 3.0.
When Internet Explorer downloads and caches content, if the server has specified an expiration time for the content, Internet Explorer should not send "If-Modified-Since" GET requests to the server to check for content updates until after the expiration date and time have been reached (which is indicated in the expiration header). Internet Explorer should only send an "If-Modified-Since" GET request to check with the server if the content is expired. However, with MSXML.dll (and thus with .xml and .xsl files), an unnecessary "If-Modified-Since" GET request is sent even if the .xml or .xsl file has not expired.
If all the files are loaded in the cache because of a previous visit to the site, and if the files have not expired, this bug can be observed in several different circumstances:
When you click Back to browse to a previously visited XML document, Internet Explorer sends an "If-Modified-Since" header to the server to check the status of the XML file.
When you type the URL in the Address bar to an XML document that is linked to a XSL style sheet, Internet Explorer sends an "If-Modified-Since" header for the XSL document but not the XML document.
When you call the load method of the XML DOMDocument object to load an XML document through script, Internet Explorer sends an "If-Modified-Since" header for the XML file.
When you use the XML data island in an ASP or HTML page, if you click the URL or press the BACK button to access the page, Internet Explorer sends an "If-Modified-Since" GET request to the server for the XML file.
Perform the steps in the Resolution section to resolve the first two issues.
For more information about how to resolve the third issue, click the following article number to view the article in the Microsoft Knowledge Base:
308603 The DomDocument Load method ignores content expiration
At this time, there is no resolution for the fourth issue.
For more information about how to install MSXML 3.0 in Replace mode, see the following Microsoft Web site:
Microsoft Internet Explorer 4.01 Service Pack 1, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.01, Microsoft Internet Explorer (Programming) 5.01 SP1, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer (Programming) 6.0, Microsoft XML Parser 2.0, Microsoft XML Parser 2.5, Microsoft XML Parser 2.6