我的问题只发生在 Firefox的后期添加中。我已经检查了fiddler中的常用浏览器,他们表现得很好
到目前为止的故事.....我有一个网站已经转移到一个新的托管服务提供商。网站内容(图像,音频等)曾经使用IIS中的虚拟目录在内容共享上可用。 HTML中内容的引用是通过相对路径完成的,例如: “/images/pic.gif”。
作为网站迁移的一部分,内容随后被移动到另一个URL,因为我们不想在Web代码所在的相同服务器上托管内容。 (这有多种原因,但它们不会影响这个问题)。因此,我们不必重新指向我们使用IIS URL重定向(http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module)的内容(图像,音频)的所有现有引用,并在应用程序的web.config中设置以下内容。
<rewrite>
<rules>
<rule name="Images">
<match url="^/?images/(.*)$" />
<action type="Redirect" url="http://data.xxxx.com/images/{R:1}?ref=1" />
</rule>
</rules>
</rewrite>
重定向工作正常,因为图像引用以 data.xxxx.com 作为前缀,并且图像在网站上显示正常。如果我们使用JavaScript等广告向网站添加广告
<script language="javascript">
if (window.adgroupid == undefined) {
window.adgroupid = Math.round(Math.random() * 1000);
}
document.write('<scr' + 'ipt language="javascript1.1" src="http://xxx.xxx.xxx/addyn/3.0/981/2185858/0/225/ADTECH;loc=100;target=_blank;key=key1+key2+key3+key4;grp=' + window.adgroupid + ';misc=' + new Date().getTime() + '"></scri' + 'pt>');
</script>
...它使重定向发生两次。
这只发生在Firefox
中如果我将javascript移动到图像调用下方,则问题不会发生。
我尝试在javascript标记中使用 defer =“defer”,但广告不会显示在页面上。
我检查了各种资源,看不清楚为什么会这样,我们不会改变任何代码,除了页面内javascript的位置。
我需要减少我们对内容服务器的通话次数,因为我们按每次通话收费,因此我们所做的任何剩余通话都会给我们带来经济损失。
谢谢你的帮助
答案 0 :(得分:1)
您看到的问题是Firefox中的图像缓存并不能很好地处理重定向(并且可能是您阻止了HTTP级别的缓存)。结果,在等待脚本时启动的图像预取和实际的图像加载最终都会到达网络。