Кэширование импорта XSLT на стороне клиента в Internet Explorer - PullRequest
2 голосов
/ 14 февраля 2011

Я преобразую XML-документ с помощью XSLT в Internet Explorer 7. Мой XSLT импортирует / включает - я пробовал оба - другой XSLT со следующей строкой:

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

Это приводит кHTTP-запрос для включенного файла каждый раз, когда используется включающий XSLT, даже если ссылка на родительский 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 Ответ

1 голос
/ 14 февраля 2011

Ответы на аналогичный вопрос рекомендует установить для ForcedResync значение false.

Но Ци Сэмюэля Чжана ответные предостережения

ForcedResync должен работать для большинства случаи, но ForcedResync в MSXML3 имеет известные проблемы для смягчения в обратном направлении совместимость, пожалуйста, используйте MSXML2.DOMDocument.6.0, когда это возможно.

...