Как добавить рандомизированную или основанную на дате строку запроса к изображениям - PullRequest
0 голосов
/ 10 марта 2011

Internet Explorer имеет проблемы. В этом случае проблемы с кэшированием. Изображения, которые были сохранены на моем сервере и на которых есть ссылки на моем динамически создаваемом сайте (WordPress), отображаются как «красный х» в IE8, когда эти изображения каким-либо образом изменены, но URI изображения не изменяется в коде, иногда.

Когда я изменяю URI этих ресурсов, изображения правильно отображаются в IE. Поэтому я хочу добавить несколько уникальную строку запроса в конец URI моего изображения (или изменить «graphic.png» на «graphic.png? D = a334bc4zxdg2» (если рандомизирован) или «graphic.png? D = 201103091616» ( если не датировано). Я не придирчив к случайной строке запроса или «датированной» строке запроса - так же, как это хорошая длинная строка запроса, добавленная в конец типов файлов .PNG и .JPG.

Я пытался написать свое, и поэтому я очень унижен. Я полагаю, что это будет решено с помощью оператора preg_replace ... что-то вроде

<php
echo preg_replace('(png|jpg)', '$1.?d.=<the-randomizing-or-timestamp-code>','some-subject-I-dont-know-how-to-specify')
?>

Как вы можете заметить выше, мне нужно много помощи при написании этого кода. Обратите внимание, я работаю в WordPress, который использует несколько уникальных хуков, и я пытаюсь применить это к полному содержанию тела. Спасибо ТАК!

== Обновление ==

Друг предлагает следующее:

// Append PNG files with timestamp query string
function date_images () {
    $new_content = str_replace (".png" ,".png?id=".time() ,$original_content);
    }

add_filter('the_content', 'date_images');

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

Ответы [ 3 ]

1 голос
/ 10 марта 2011

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

Я бы попробовал это:

<script type="text/javascript" src="PATH-TO-JQUERY"></script>
<script type="text/javascript">
// document.all is IE only
if ( document.all )
{
    $(document).ready(function(){
        // grab each image
        $('img').each(function(){
            var date = new Date;
            // add the current unix timestamp in microseconds to the the image src as a query string
            this.src = this.src + '?' + date.getTime();
        });
    });
}
</script>

<img src="image1.gif" />
<img src="image2.gif" />
<img src="image3.gif" />
0 голосов
/ 15 октября 2013

Все, что нужно сделать, это заставить браузер перезагрузить изображение.

Имя файла может оставаться неизменным везде, единственное необходимое изменение - img src = "", когда вы решите отобразить изображение.

Примерно так:

<img src="<?php echo $img_name.'?'.time(); ?>" />
0 голосов
/ 10 марта 2011

Если я вас правильно понимаю, вы можете просто сделать:

echo $variable.'?d='time();

Чтобы добавить штамп unixtime в конец строки.

...