Задержка фонового изображения и остановка его кэширования - PullRequest
1 голос
/ 12 ноября 2011

У меня есть фоновое изображение, которое должно отображаться вместо рекламного места в случае блокировки рекламы. Однако мне нужно отложить его до тех пор, пока не будет показано объявление.

Я использую следующий код, однако изображение не задерживается достаточно долго.

<script type="text/javascript" language="JavaScript">
var resources = {div1:"url('/images/image1.png')",div2:"url('/images/image2.jpg')"};
function loadImageBG(id) {
  document.getElementById(id).style.backgroundImage = resources[id];
}
</script>


Кроме того, как я могу остановить кэширование изображения?

Это сайт WP, и я использую WP Super Cache; Я не вижу никакой функции в плагине, чтобы сделать это, хотя я не уверен, что этого будет достаточно для кэширования браузеров.

1 Ответ

0 голосов
/ 12 ноября 2011

Простой, надежный способ - это таймер.Учитывая капризы неизвестного времени загрузки рекламы - и загружается ли она вообще - она ​​не будет идеальной.Но это намного проще, чем пытаться определить, когда или загружается ли реклама.

Попробуйте что-то вроде:

function loadImageBG (id) {
    setTimeout ( function () {
        document.getElementById (id).style.backgroundImage = resources[id];
    }, 888);
}


Я не рекомендую останавливать кеш;Вы не хотите раздражать своих пользователей слишком сильно.;)

Но один из способов сделать это - добавить уникальные параметры в URL ресурса:

function loadImageBG (id) {
    setTimeout ( function () {
        var d           = new Date();
        var milliSecs   = d.getTime();
        var noCacheURL  = resources[id].replace (/'\)/, "?nc=" + milliSecs + "')");

        document.getElementById (id).style.backgroundImage = noCacheURL;
    }, 888);
}

Примечания:

  1. 888 - задержка таймера в миллисекундах.По соображениям удобства использования я не рекомендую делать это больше, чем 1000 - что составляет 1 секунду.

  2. Нет значения задержки noCacheURL.Поскольку значение noCacheURL s задается часами в миллисекундах, оно всегда будет отличаться при каждой загрузке страницы.

    Таким образом, браузер пользователя всегда будет запрашивать новую копию, минуя кэш пользователя.

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

...