IE - XSL文件没有从浏览器缓存加载(总是命中服务器加载)

时间:2018-05-11 06:05:30

标签: xslt-1.0 internet-explorer-11 browser-cache http-status-code-304

在我们的应用程序中,我们有一些使用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总是针对每个请求进行更新。

这里的任何帮助,将不胜感激。

1 个答案:

答案 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>