在我们的应用程序中,我们有一些使用activex对象Microsoft.XMLDOM进行xsl转换的页面。它是一个遗留应用程序,因此没有太多可以进行任何更改。
Example:
<script>
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = false;
doc.load("/<<Some Path/myXSL.xsl");
document.write(myXML.transformNode(doc));
</script>
我们的HTTP服务器正在向客户端发送正确的缓存控制,到期属性。我们可以看到CSS,JS,图像文件等从浏览器缓存中获取(状态304),但对于XSL文件,它总是命中服务器(状态200)。
如果我们打开Temporary Internet Files,我们可以看到虽然Expires列存在未来日期,但Last Checked总是针对每个请求进行更新。
这里的任何帮助,将不胜感激。
答案 0 :(得分:0)
在google中搜索了很多内容后,我们了解ActiveX Microsoft.XMLDOM在请求标头中发送“pragma-nocache”(跳过浏览器缓存)。
要解决此问题,我们需要将ForcedResync属性设置为false(告知XML Dom对象不发送该pragma)。
示例:
<script>
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = false;
doc.setProperty("ForcedResync", false);
doc.load("/<<Some Path>>/myXSL.xsl");
document.write(myXML.transformNode(doc));
</script>