none
Обновление картинок, хранящихся на сервере, по щелчку кнопки RRS feed

  • Вопрос

  • Приветствую, господа!!!
    На сервере имеется директория Images, в которой хранятся картинки .png. Эти картинки периодически заменяются новыми, но имена остаются теми же.
    Стоит задача получить их с сервера в процессе создания иерархии элементов управления (в виде Image), привязвав к файлу по url. Обновление должно происходить при PostBack-е, вызываемом кнопкой.
    Однако, правильно (в оответствии с тем, что лежит на сервере) картинки отображаются только при первой загрузке или после Refresh (F5) браузера. По щелчку кнопки картинки извлекаются откуда угодно, но только не с сервера (может из кэша (хотя и на странице и в контроле кэширование отключено)). Как получить по PostBack именно те картинки, что на сервере?
    20 февраля 2010 г. 11:29

Ответы

  • а) напишите свой хендлер и подставляйте заголовки вроде nocache и т.п. в отдачу картинок
    б) самый простой вариант, добавляйте к картинкам параметры и тогда браузер не будет их кешировать, вроде /images/1.png?param=1234, после postback заменяйте на /images/1.png?param=12345, ну а параметр стройти например при помощи getdate или чего нибудь подобного


    [Мой блог], [LinkedIn]
    • Помечено в качестве ответа VOTECO 22 февраля 2010 г. 14:00
    21 февраля 2010 г. 20:36

Все ответы

  • а) напишите свой хендлер и подставляйте заголовки вроде nocache и т.п. в отдачу картинок
    б) самый простой вариант, добавляйте к картинкам параметры и тогда браузер не будет их кешировать, вроде /images/1.png?param=1234, после postback заменяйте на /images/1.png?param=12345, ну а параметр стройти например при помощи getdate или чего нибудь подобного


    [Мой блог], [LinkedIn]
    • Помечено в качестве ответа VOTECO 22 февраля 2010 г. 14:00
    21 февраля 2010 г. 20:36
  • а) напишите свой хендлер и подставляйте заголовки вроде nocache и т.п. в отдачу картинок
    б) самый простой вариант, добавляйте к картинкам параметры и тогда браузер не будет их кешировать, вроде /images/1.png?param=1234, после postback заменяйте на /images/1.png?param=12345, ну а параметр стройти например при помощи getdate или чего нибудь подобного


    [Мой блог], [LinkedIn]
    Да, спасибо за совет. Я приблизительно так проблему и решил: при создании картинок присваивал им новые имена в виде добавления к имени GUID-a. Если целевой URL хоть немного отличается от предыдущего, то браузер их уже не кэширует. Однако ьакой подход в моем случае приводит к накоплению картинок в папке, откуда они берутся и становится проблематично их удалять, т.к. их имена неизвестны.
    22 февраля 2010 г. 14:00
  • Вы не поняли меня. Картинка всегда будет одна и таже - 1.png, просто в src ставьте параметры:
    <img src="1.png?param=111" />
    <img src="1.png?param=222" />
    В этом случае вы отдадите одну и туже картинку, но браузер будет считать их за разные, так как запросы разные.


    [Мой блог], [LinkedIn]
    22 февраля 2010 г. 14:41
  • А как это можно программно сделать? При сохранении картинок в директории методом bmp.Save(1.png?param=111) или их достаточно добавлять только при ссылке на картинку по url (ну или как в Вашем примере, в тэге src)? Впрочем, сейчас попробую так и так.
    22 февраля 2010 г. 17:32
  • только в src указывать, просто генерируйте постоянно разные параметры (значения параметров) и все получится


    [Мой блог], [LinkedIn]
    22 февраля 2010 г. 18:39
  • только в src указывать, просто генерируйте постоянно разные параметры (значения параметров) и все получится


    [Мой блог], [LinkedIn]

    Попробовал. Осталось только поблагодарить Вас за простое и эффективноге решение, т.к. действительно все получилось.
    23 февраля 2010 г. 8:38