在Internet Explorer中缓存客户端XSLT导入

时间:2011-02-14 16:30:35

标签: javascript xml internet-explorer-7 xslt msxml

我正在使用Internet Explorer 7中的XSLT转换XML文档。我的XSLT导入/包含 - 我已经尝试了两种 - 另一个XSLT包含以下行:

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

每次使用包含XSLT时,都会导致对包含文件发出HTTP请求,即使缓存并重新使用对父XSLT的引用也是如此。 IE会在每个请求中为import / include请求发送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 个答案:

答案 0 :(得分:1)

similar question的回复建议将ForcedResync设为false。

Qi Samuel Zhang's回复提醒

  

ForcedResync应该适用于大多数人   案例,但MSXML3中的ForcedResync   有已知问题可以缓解后退   兼容性,请使用   MSXML2.DOMDocument.6.0尽可能。