Nano Hash - криптовалюты, майнинг, программирование

Загрузка кеша Firefox в динамическом iframe

Я пытаюсь создать страницу, которая при обновлении будет случайным образом загружать URL-адрес из списка URL-адресов. Лучший способ сделать это, который я нашел до сих пор, — это заставить PHP случайным образом брать строку из файла, а затем загружать ее в iframe. Это также позволяет мне иметь кнопку закрытия на верхней панели, которая позволяет открывать любую страницу, загруженную в iframe.

Проблема, с которой я сталкиваюсь, заключается в том, что в firefox после пары перезагрузок iframe просто начинает возвращаться к кешу и не загружает ничего нового. Я предполагаю, что это проблема с кешем, потому что нажатие Ctrl + F5 заставит iframe загрузить новую страницу.

Я попытался добавить кучу метатегов антикеша, а также кусок javascript, который я нашел на эта статья.

Пока ничего не получилось. Кто-нибудь знает хороший обходной путь или видит что-то не так в моем коде (я очень новичок).

Спасибо за любую помощь!

Вот код:

</html>

<head>
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="expires" content="FRI, 13 APR 1999 01:00:00 GMT">  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript">

function Ionload()
{

$(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;
      }
    }
});

}
</script>

<?php

class MyClass
    {
    function GetLine()
        {
            global $line;

            srand ((double)microtime()*1000000);
            $f_contents = file ("urlz");
            $line = $f_contents[array_rand ($f_contents)];

        }

    function PrintVar()
        {
            global $line;
            print $line;
        }
    }

MyClass::GetLine();

?>

<style type="text/css" media="all">
    html, body {
      height: 100%
    }
    body {
      margin: 0;
      overflow: hidden;
    }
    #topbar {
      height: 50px;
      width: 100%;
      border-bottom: 3px solid #666
    }
    #page {
      height: 100%;
      width: 100%;
      border-width: 0
    }
</style>

</head>
<body>

<div id="topbar">

<a href=<?php MyClass::PrintVar();?> target="_top">close</a>

</div>

</body>

<iframe id="page" name="page" onload="Ionload()" src=<?php MyClass::PrintVar();?> frameborder="0" noresize="noresize"></iframe>

</html>

Обновлять:

С некоторой помощью GGG я исправил это. Вот изменение функции:

function GetLine()
    {
        global $newline;

        srand ((double)microtime()*1000000);
        $f_contents = file ("urlz");
        $line = $f_contents[array_rand ($f_contents)];
        $newline = $line . "?foo=" . rand();

    }

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

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


Ответы:


1

Попробуйте добавить фиктивную строку запроса к URL-адресу, чтобы браузер был вынужден пропустить кеш.

Например, вместо загрузки www.google.com загрузите www.google.com?foo=N, где N — число, которое увеличивается при каждой загрузке.

28.02.2012
  • Есть ли способ заставить PHP сделать это, поскольку он извлекает ссылку из файла? Я очень новичок в PHP. На самом деле я впервые пытаюсь его использовать. Спасибо. 28.02.2012
  • Да, вы можете использовать оператор . (точка) для конкатенации строк в PHP. 28.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..