【问题标题】:IE - XSL files not getting loaded from browser cache (always hitting the server to load)IE - XSL 文件没有从浏览器缓存中加载(总是点击服务器加载)
【发布时间】:2018-05-11 06:05:29
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    在谷歌中搜索了很多之后,我们了解到 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-26
      • 2016-11-27
      • 2017-02-16
      • 2013-01-09
      • 2016-10-26
      • 2015-06-24
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多