Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Как избавиться от кэша при ежедневной смене карт.? |
Автор: Artiomka 28.7.2009, 22:20 |
Есть маленькая программка на php с базой данной, которая каждый день меняет картинки. Все нормально, только иногда с первого раза картинка не прорисовывается! Люди говорят кэш мешает. Есть шанс это исправить? Заранее спасибо! ![]() |
Автор: Ипатьев 28.7.2009, 22:48 |
если html с картинкой выводится пхп скриптом, то добавлть к имени файла случайный параметр. |
Автор: Artiomka 28.7.2009, 23:16 |
А можете привести пример? Если скрипт .../test.php и он находится в файле правой колонке ..../right.php к какому имени добавить параметр и как он может выглядеть? Спасибо ![]() |
Автор: MoLeX 29.7.2009, 05:33 |
Artiomka, а какой скрипт отвечает за вывод картинки? |
Автор: Ипатьев 29.7.2009, 07:35 |
к имени картинки |
Автор: fesor 29.7.2009, 07:42 | ||
Добавление рандомного значения хорошо только для загрузки файлов.
может поможет... хотя неуверен что для картинок это сойдет. |
Автор: Ипатьев 29.7.2009, 08:18 |
fesor, а картинка - это не файл? А что? И куда писать твой код? В картинку? |
Автор: Artiomka 29.7.2009, 08:20 | ||
Картинки 1.png 2.png 3.png и так далее - штук 200. Они меняются строго по номеру каждый день. А прорисовываются иногда только после F5. Это менять надо имя каждый картинки??? А скрипт такой: Спасибо ![]()
Модератор: используй кнопку КОД для оформления |
Автор: Ипатьев 29.7.2009, 08:40 |
В этом коде не надо ничего менять. Писать надо в коде показа. в теге img |
Автор: MoLeX 29.7.2009, 08:46 | ||||
Artiomka, допустим твой скрипт называется images.php, соответственно он вызывается вот так
а теперь переделываем в следующее
|
Автор: Ипатьев 29.7.2009, 08:51 |
В этом коде можно вписать заголовки, управляющие кэшированием. Но код очень забавный. Только сейчас разглядел. |
Автор: Artiomka 29.7.2009, 08:59 |
В коде показа ... Я так понимаю в коде <img src=".../test.php"/> А не подскажете, что именно здесь менять. Вроде все нормально (для новичка конечно!) Спасибо ![]() Добавлено через 3 минуты и 27 секунд "заголовки, управляющие кэшированием." ![]() |
Автор: MoLeX 29.7.2009, 09:11 | ||||
до вывода инфы в браузер
Добавлено @ 09:14 да, сделай так
и каждый день к адресу картинки будет добавляться мусор |
Автор: icewind 29.7.2009, 09:16 | ||||
В том случае если используются динамические шаблоны |
Автор: Artiomka 29.7.2009, 09:46 | ||
Переделал выводящий файл по вашему совету. Теперь он выглядит так: <img src=".../test.php?<?=date('Y-m-d');?>" width="180" /> Эксплорер - 100% работает! Опера - 100% работает! Firefox - через раз .. хмм А код ниже вставить в самый верх файла test.php?
Спасибо ![]() |
Автор: MoLeX 29.7.2009, 10:55 |
нет. в самый верх файла в котором содержаться эти строки |
Автор: Artiomka 29.7.2009, 15:27 | ||
А этот фрагмент кода в какие-то кавычки брать надо? типа <> </> , а то у меня все содержание этого кода (после вставки в самый верх файла right.php) появилось на главной странице! ![]() |
Автор: lelik133 29.7.2009, 16:07 |
это код php соответственно <?php ?> |
Автор: Ипатьев 29.7.2009, 16:24 |
В файле right.php этот код будет абсолютно бесполезен. В каких кавычках его не пиши. |
Автор: Artiomka 29.7.2009, 22:23 |
"В файле right.php этот код будет абсолютно бесполезен. В каких кавычках его не пиши." Так и есть ... в right.php толка немного ... right.php, left.php, header.php, footer.php, index.php, main.php - все что есть. Так есть ли выход или махнуть на firefox и пусть прорисовывается хотя бы через раз там? Спасибо ![]() |
Автор: Ипатьев 29.7.2009, 22:31 |
Один из вариантов я написал. С заголовками. Можно пользоваться им. Можно пользоваться вариантом с дописыванием параметра. Он тоже рабочий. Результаты с файрфоксом вызывают у меня сомнения. Как за 5 минут удалось протестировать механизм, рассчитанный на сутки - загадка. Добавлено через 1 минуту и 13 секунд Сам приведенный здесь код показа картинок - ужасен. Сайт от перегрузки спасает только кэширование картинок браузерами. |
Автор: Artiomka 29.7.2009, 23:00 | ||
Протестировал просто. Закрыл, открыл, запустил. Или это некорректно? ![]() Проверю завтра после обновления странички. А куда писать заголовки header ... - в какой из .php? Спасибо ![]() Ну ... задача было непростая, поэтому и код, наверное, такой "хитрый". (Знакомый писал) |
Автор: Ипатьев 29.7.2009, 23:07 |
Задача примитивная, а код ужасный. Картинка меняется раз в сутки, а генерируется при каждом обращении. Небось еще и не одна. Вместо того, чтобы просто выдать содержимое картинки в браузер, сначала зачем-то создается ее представление в формате GD. Ужас. Куда писать заголовки, я писал. |
Автор: Artiomka 29.7.2009, 23:57 | ||||
если заголовки
добавить в test.php, то код вообще перестает работать! right.php сказали смысла нет ... хмм ![]() ![]() Спасибо ![]() |
Автор: Ипатьев 30.7.2009, 00:00 |
Если перестает работать - значит, как-то не так вставлено. Вставляется, я надеюсь, после <?, как уже писали выше? |
Автор: Artiomka 30.7.2009, 01:19 | ||
Вставлено в самом верху кода test.php следующим образом:
После чего картинка вообще перестает появляться - хоть обновляй, хоть нет! ![]() ![]() |
Автор: MoLeX 30.7.2009, 05:36 |
в index.php надо вставлять |
Автор: Artiomka 30.7.2009, 07:41 | ||
вставил в index.php Получилось так:
Но тогда пишет: Warning: Header may not contain more than a single header, new line detected. in /home/www/.../index.php on line 3 Warning: Header may not contain more than a single header, new line detected. in /home/www/.../index.php on line 4 Все еще в процессе поиска ... ![]() |
Автор: Ипатьев 30.7.2009, 08:04 |
1. Если прочитать, хотя бы со словарем, текст ошибки, то станет понятно, что исправлять. 2. Поэтому-то и в коде показа картинок не работало. 3. Нет смысла показывать картику "Хочу пример", если ты не в состоянии скопировать пример и вставить в свой код. 4. Код, показывающий картинки - единственное место, где имеет смысл писать эти заголовки. Если подумать. Нам надо запрещать кэширование картинки, а не файла index.php. 5. Эти заголовки будут запрещать кэширование вообще, а не на сутки, что значительно увеличит бесполезную нагрузку на сервер. 6. В идеале, картинки надо генерировать 1 раз в сутки, по крону. 7. Если знакомый, который писал код, не знает, что такое крон, решение с параметром после имени картинки будет наилучшим. |
Автор: Artiomka 30.7.2009, 08:34 |
Ипатьев, спасибо за помощь. Но так показывать свое превосходство в программировании " ... прежде чем трясти картинкой" не совсем красиво. Типа, вы полный идиот, но так уж и быть я вам дам намек где у тебя проблемы парень. Я все понимаю, что это советы бесплатные, но все же. Кстати, не думайте, что я на халяву воспользовался вашим гениальным мозгом. Картинки по-прежнему прогружаются через раз. А код вставить может любой. Все зависит от учителя. ![]() |
Автор: Ипатьев 30.7.2009, 08:49 |
Не надо передергивать. Для того, чтобы скопировать и вставить кусок текста, не нужно быть программистом. Поэтому "превосходство в программировании" тут не при чем. Я не писал "вы полный идиот". Это ваша собственная интерпретация, и она целиком на вашей совести. Я всего лишь имел в виду, что никакой пример не поможет, если его неверно скопировать. И кроме того, чтобы требовать решение своей проблемы, надо хоть немного усилий и со своей стороны прикладывать. Не получилось вставить код? попробуй еще раз. Всё имеет свои пределы, и участники форума не могут зайти на ваш компьютер, и отредактировать там файл. Хоть что-то надо сделать самостоятельно. И не стоит упрекать других, если не получилось выполнить даже такую простую операцию. Не нравится слово "трясти"? я могу взять его обратно и извиниться. Но решение проблемы это не приблизит. Зачем вообще устраивать оффтопик и переходить на личности? Все эти выпады должны стимулировать меня к решению невнятной задачи "картинки показываются через раз"? Куда эффективнее было бы подробное описание проблемы. Добавлено @ 08:54 PS. Возможно, некоторое непонимание происходит оттого, что я изначально рассматриваю пишуших в этот форум, как людей, которые хотят хотя бы минимально разобраться в своей проблеме. Для тех, кому требуется просто готовое решение, тут, как я понял, есть раздел http://forum.vingrad.ru/forum/Vingrad-help-center.html. |
Автор: MoLeX 30.7.2009, 10:52 | ||
|
Автор: Artiomka 30.7.2009, 19:01 |
Всем спасибо, кто пытался мне помочь с моим вопросом! Теперь мне просто нужно немножко время, что разобраться с полученной информацией ... Всем удачи! ![]() |