Обновить изображение PHP и Javascript - PullRequest
2 голосов
/ 01 марта 2011

Я использую Comet, движок реального времени под названием APE, и я использую jQuery для обновления изображения PHP.Сначала я загружаю изображение так:

<div id="container">
<img src="image.php" style='background: url(../assets/load.gif) no-repeat center center;margin-left:42px;' alt=' Loading ...' width="500px" height="300px" />
</div>

А потом, когда я получаю событие, я делаю это:

$("#container").empty();
$("#container").html('<img src="image.php?device='+device+'" style="background: url(../assets/load.gif) no-repeat center center;margin-left:42px;" width="500px" height="300px" alt=" Loading ..."/>');

устройство - это переменная, которую я получаю из события, поэтому дляНапример, я получаю device1, все работает нормально (изображение на самом деле представляет собой диаграмму), а название меняется на «device1» и отображает последние 5 минут

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

Я пытался использовать это в верхней части страницы:

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>

Я могу подождать около 10 минут, отправить событие, но период времени все еще от начальной загрузки, ядумал, что "empty ()" очистит контейнер, перезагрузит изображение и, следовательно, перезапустит скрипт.Любой совет поможет!

Спасибо

Ответы [ 2 ]

7 голосов
/ 01 марта 2011

Обычный подход - добавить тривиальную переменную в строку запроса, содержащую метку времени Unix;Браузер видит каждый вызов как вызов уникального изображения.Например,

'image.php?device=' + device + '&t=' + Math.round((new Date()).getTime() / 1000);

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

2 голосов
/ 01 марта 2011

Добавьте дополнительную случайную переменную в путь к изображению.

$("#container").html('<img src="image.php?device='+device+'&rand='+(math.random * 1000000)+'" style="background: url(../assets/load.gif) no-repeat center center;margin-left:42px;" width="500px" height="300px" alt=" Loading ..."/>');

Это сделает его похожим на другой URL и заставит браузер не кэшировать.Это та же тактика, которую использовал YUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...