【发布时间】:2009-11-05 19:46:24
【问题描述】:
我们最近开始使用 SVN 关键字将当前修订号自动附加到我们所有的 <script src="..."> 包含(所以它看起来像这样:<script language="javascript" src="some/javascript.js?v=$Revision: 1234 $"> </script>)。这样,每次我们将新的代码副本推送到生产环境时,用户缓存都不会导致用户仍在使用旧的脚本版本。
它工作得很好,除了 IE6。出于某种原因,IE6 偶尔会表现得好像其中一些文件不存在。我们可能会收到奇怪的错误语句,例如“Unterminated String Literal on line 1234”,但是如果您尝试将调试器进程附加到它,它不会在该行停止(如果您对调试器提示说“是”,则没有任何反应,并且页面执行继续)。它的日志条目显示在 IIS 日志中,表明用户确实在接收文件(状态代码 200,传输的字节数适当)。
这似乎也仅在通过 https 而非标准 http 提供页面时发生。为了进一步复杂化,它不一定总是发生。您可能会刷新页面 5 次并且一切正常,然后您可能会再刷新 20 次并且每次都失败。对于大多数用户来说,它似乎总是有效,否则总是失败。当企业环境中有多个用户的安全性和缓存设置强制相同时,这甚至是不可预测的。
任何想法或建议都会非常感谢,这已经让我发疯了好几个星期了。
【问题讨论】:
-
仅供参考
"$"是 URI 中的保留字符 (tools.ietf.org/html/rfc3986#section-2.2)。你的网址真的应该(合法地)是?v=%24Revision%3A%201234%20%24 -
是的,尽管浏览器很友好地为我们纠正了这一点,至少根据网络服务器日志,它要求 URL 完全转义。
标签: javascript svn internet-explorer-6