文件名中包含$ Revision $的IE6 Javascript问题

时间:2009-11-05 19:46:25

标签: javascript svn internet-explorer-6

我们最近开始使用SVN关键字自动将当前版本号附加到我们的所有<script src="...">包含中(因此它看起来像这样:<script language="javascript" src="some/javascript.js?v=$Revision: 1234 $"> </script>)。这样,每次我们将新的代码副本推送到生产环境时,用户缓存都不会导致用户仍然使用旧的脚本修订。

除IE6外,它的效果很好。出于某种原因,IE6偶尔会表现为某些文件不存在。我们可能会得到奇怪的错误语句,如“1234行上的未终止字符串文字”,但如果您尝试将调试程序进程附加到它,它将不会在此行上停止(如果您对调试器提示符说“是”,则没有任何反应,并继续执行页面)。它的日志条目显示在IIS日志中,表明用户肯定正在接收该文件(状态代码200,传输了适当的字节数)。

当页面通过https而不是标准http提供时,似乎也会发生这种情况。为了进一步复合,它不一定总是发生;你可以刷新一个页面5次,一切正常,然后你可以刷新它20次,每次都失败。对于大多数用户来说,它似乎始终有效,或者总是失败。如果企业环境中的多个用户的安全性和缓存设置强制相同,则甚至无法预测。

任何想法或建议都会被非常赞赏,这让我疯狂了好几个星期。

2 个答案:

答案 0 :(得分:1)

  1. 使用fiddler2检查您的日志,以确保浏览器请求该页面,而不是使用缓存。另请检查JS脚本的URL和返回的标头。
  2. 您使用的是GZip吗? There has been issues reported with it
  3. 我建议使用Internet Explorer Application Compatibility VPC Image进行测试。这样,您可以使用100%IE6进行测试,而不是那些声称在另一个浏览器中模拟IE6的插件之一。

答案 1 :(得分:0)

我认为这是一个非常聪明的主意。但是,我认为这个问题可能与网址中的空格有关。从技术上讲,url应该有空格编码。

查看您是否可以自定义SVN中的关键字以生成没有特殊字符的修订号。