2011-02-14 50 views
2

我正在使用Internet Explorer 7中的XSLT转换XML文档。我的XSLT导入/ includes - 我试过了两个 - 另一个XSLT,其行号如下:在Internet Explorer中缓存客户端XSLT导入

<xsl:import href="utils.xsl" /> 

每次使用包含XSLT时,这会导致对包含文件的HTTP请求,即使对父XSLT的引用被缓存并重新使用。 IE在每个导入/包含请求的请求上发送一个Pragma: no-cache标题。

是否可以阻止这些重复的HTTP请求?

  • 我可以让IE缓存客户端中的文件吗?
  • 如果没有,我可以让IE发送一个“If-Modified-Since”头文件吗?

为了完整起见,这里的相应改造的JavaScript:

var XMLUtil = { 

    // transforms the sourceStr using the given xslDoc 
    transformString: function(sourceStr, xslDoc /*XMLDOM doc*/) { 
     var sourceDoc = XMLUtil.loadFromString(sourceStr); 
     var resultDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     sourceDoc.transformNodeToObject(xslDoc, resultDoc); 
     return resultDoc; 
    }, 

    // creates an XMLDOM document from a string containing XML 
    loadFromString: function(xml) { 
     var doc = new ActiveXObject("Microsoft.XMLDOM"); 
     doc.async = false; 
     doc.loadXML(xml); 
     if (doc.parseError.errorCode != 0) 
      throw "Error parsing XML: " + doc.parseError.errorCode; 
     return doc; 
    } 

} 

回答

1

similar question的答复建议设置ForcedResync为false。

Qi Samuel Zhang's响应提醒

ForcedResync应该为大多数 情况下工作,但在ForcedResync MSXML3 已经知道问题的可能的时候,以减轻向后兼容性 ,请使用 MSXML2.DOMDocument.6.0。