2011-03-10 4 views
0

У Internet Explorer есть проблемы. В этом случае проблемы кэширования. Изображения, которые были сохранены на моем сервере и указаны на моем динамически сгенерированном сайте (WordPress), отображаются как «красный x» в 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, но делает элемент контента полностью исчезающим. Спасибо за вашу помощь ...

ответ

0

Если я правильно Вас понял, вы могли бы просто сделать:

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

Для добавления UnixTime штамп в конце строки.

+0

Как бы полной функции PHP записать? Я попробовал ваше решение, но считаю, что я написал это неправильно в моем файле функций. Спасибо - – GlennFriesen

1

Вам было бы лучше реализовать это как исправление на стороне клиента, чтобы пользователи, не являющиеся пользователями 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

Спасибо за ваш javascript. Казалось, что это разрешило мою проблему (изображения правильно отображаются в нескольких конфигурациях браузера IE8, у которых возникли проблемы). Однако, когда я проверяю исходный код, нет добавленной строки запроса - изображения по-прежнему заканчиваются только в их типе файлов. – GlennFriesen

+0

На самом деле, я беру это обратно! Он не добавляет дату к файлам в исходном коде, но делает это на стороне клиента ... Я вижу это, проверяя «свойства» изображения в IE. Большое спасибо Джереми! – GlennFriesen

+0

@glenn Нет проблем! Возможно, вы захотите также проверить [IE Developer Toolbar] (http://www.microsoft.com/downloads/en/details.aspx?FamilyID = 95e06cbe-4940-4218-b75d-b8856fced535). –

0

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

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

Что-то вроде этого:

<img src="<?php echo $img_name.'?'.time(); ?>" /> 
Смежные вопросы