2011-02-14 47 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。