Многократные перенаправления с использованием IIS URLRedirect в FireFox при вызове JavaScript - PullRequest
0 голосов
/ 08 сентября 2011

Проблема, с которой я сталкиваюсь, возникает только в последующих добавлениях Firefox. Я проверил обычные браузеры в Fiddler, и они ведут себя сами

История до сих пор ..... У меня есть сайт, который перешел на нового хостинг-провайдера. Содержимое веб-сайта (изображения, аудио и т. Д.) Раньше было доступно на общем ресурсе с использованием виртуального каталога в IIS. Ссылки на контент в HTML были сделаны через относительные пути, например «/images/pic.gif".

Как часть миграции сайта, контент затем был перемещен на другой URL, поскольку мы не хотели размещать контент на тех же серверах, на которых работает веб-код. (Есть разные причины для этого, но они не влияют на эту проблему). Чтобы нам не нужно было повторно указывать все существующие ссылки на контент (изображения, аудио), мы использовали IIS URL Redirect (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>

... это делает перенаправление дважды.

firebug references

Это происходит только в Firefox

Если переместить javascript под вызовы изображений, проблема не произойдет.

firebug references okay

Я пытался использовать defer = "defer" в теге javascript, но тогда реклама не отображается на странице.

Я проверил различные ресурсы и не могу понять, почему это происходит, мы не меняем никакого кода, кроме позиции JavaScript на странице.

Мне нужно уменьшить количество звонков, которые мы совершаем на контент-серверы, поскольку с нас взимается плата за каждый звонок, поэтому любые излишние звонки, которые мы совершаем, наносят нам материальный ущерб.

Спасибо за помощь

1 Ответ

1 голос
/ 08 сентября 2011

Проблема, с которой вы сталкиваетесь, заключается в том, что кэш изображений в Firefox не очень хорошо обрабатывает перенаправления (и, вероятно, вы предотвращаете кэширование на уровне HTTP). В результате предварительная выборка изображения, которая запускается при ожидании сценария, и фактическая загрузка изображения в итоге попадают в сеть.

См. https://bugzilla.mozilla.org/show_bug.cgi?id=552605

...