#php #rotator
#php #rotator
Вопрос:
Я использую этот ротатор изображений. Это здорово, но если я ссылаюсь на него несколько раз на одной странице, отображается одно и то же изображение. Я не знаю, сколько раз к нему будут обращаться, поэтому использование нескольких идентичных скриптов непрактично. Как мне изменить этот скрипт, чтобы я мог получить другое изображение в другом месте страницы, используя тот же URL? Возможно ли это?
РЕДАКТИРОВАТЬ: Оказывается, должна была быть какая-то проблема с кодированием. Здесь я нашел код получше, и он работает, если я использую разные запросы к каждой ссылке. Спасибо всем, кто прислал ответы!
Ответ №1:
Передайте другую строку запроса для каждого экземпляра, чтобы браузер извлекал ее несколько раз.
Ваш браузер видит, что каждое «повернутое» изображение использует один и тот же URL, поэтому он кэширует результирующее изображение из первого запроса.
Вы можете изменить это поведение двумя способами.
-
Добавьте в URL-адреса ваших «повернутых» изображений случайную строку из php. Например («rotate.php?img=my_static_image.jpg amp; x = 12345» Это означает, что браузер делает новый запрос для каждого изображения.
-
Сделайте перенаправление вашего скрипта rotate на рандомизированный URL, если он не получает дополнительных параметров.
Комментарии:
1. Согласен, но, возможно, вы можете объяснить, почему это работает? (кэширование на клиенте? ) возможно, изменение способа работы скрипта поможет.
2. Это работает, потому что без этого браузер думает, что это одно и то же изображение, и загружает его только один раз.
3. Извините, я совсем новичок в php. Не могли бы вы, пожалуйста, дать простое описание того, как это сделать? : P бесполезен , спасибо!
4.
<img src="http://example.com/image.php?1" /><img src="http://example.com/image.php?2" /><img src="http://example.com/image.php?3" />
5. Это может сработать… Я надеялся использовать один и тот же URL для всего, потому что это будет помещено в подпись форума.
Ответ №2:
Вы можете работать с получаемым параметром ‘img’.
/path/to/images/rotate.php?img=my_static_image.jpg
Подробнее о параметре GET по умолчанию вы можете найти в документации:http://www.alistapart.com/articles/randomizer /
Комментарии:
1. Это опция по умолчанию, как вы можете видеть в документации.
Ответ №3:
Если вы хотите сохранить URL неизменным, просто добавьте заголовок без кэша в свой php-скрипт следующим образом:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
Надеюсь, любой хотя бы наполовину приличный браузер учтет это и не будет кэшировать первый запрос.
Другой вариант — изменить ваш rotate.php
скрипт так, чтобы код содержался внутри функции. Затем вы должны использовать include('rotate.php');
в верхней части своего скрипта и использовать свою новую rotate()
функцию везде, где она вам нужна.