Проблема кэширования iframe src в firefox

У меня есть элемент iframe со случайным атрибутом scr. Когда я обновляю страницу каждый раз, iframe должен загружать страницу с различными параметрами запроса на основе атрибута src. Но в firefox, если я пытаюсь загрузить динамический URL-адрес в iframe, он всегда выполняет первый раз, когда запускается URL-адрес, хотя атрибут src динамически изменяется. Параметры запроса также не передаются правильно. Итак, как я могу решить эту проблему?

например:

<?php

$url = "http://localhost/test.php";

$rand_val = rand(1000, 9999);

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>";

?>

Ответы

Ответ 1

У нас была та же проблема с кешированием firefox iframe src и отключением кэша на исходной странице, а также с ошибкой страницы iframe. Мы помещаем следующий код (код jQuery) в функцию onload iframe:

$(parent.document).find("iframe").each(function() {
    // apply the logic only to the current iframe only
    if(this.contentDocument == window.document) {
       // if the href of the iframe is not same as 
       // the value of src attribute then reload it
      if(this.src != location.href) {
        this.src = this.src;
      }
    }
});

Ответ 2

Сообщается как ошибка firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

одно обходное средство сбрасывает src iframe: document.getElementById('iframe_id'). src= 'target_url';

Все еще будут два запроса: первый запрос ошибочен и отменен непосредственно перед вторым запросом, который является правильным.

Ответ 3

Ваш код в PHP выполняется один раз и отправляет содержимое в браузер. Когда вы обновляете страницу, код не запускается снова на сервере, потому что он обслуживается кешем. Таким образом, src iframe использует одно и то же случайное число.

Чтобы этого избежать, вам нужно отключить кеширование исходной страницы (а не iframe). Или у вас может быть случайное число, сгенерированное на стороне клиента (с помощью javascript), чтобы каждый раз был уникальным.