Динамические теги <img> излишне перезагружают статические изображения

Я уже задавал этот вопрос в теге <img>, не соблюдая максимальный возраст и излишне перезагружая изображения, и думал, что комментарии предоставили удовлетворительный ответ, но оказывается, что я ошибся. За шесть месяцев, я думаю, я придумал решение, но хочу проверить его здесь, прежде чем внедрять его. Это будет работать? Стоит ли это реализовать? Любое более простое решение? и т.п.

Чтобы кратко описать проблему, у меня есть программа cgi, которая генерирует gif-изображения для html-страниц с тегами, такими как следующие

<img src="http://example.com/cgi-bin/gifprogram.cgi?query_string"> 

« Query_string» задает изображение, которое должно быть сгенерировано, и как только программа генерирует его, изображение кэшируется в файле cachedirectory / filename .gif с именем файла, выбранным как md5-хэш строки query_string . Затем последующие теги, вызывающие одно и то же изображение, просто получают тот же кешированный файл.

Поэтому браузеры могут использовать свой собственный кеш, но обрабатывать тег как динамический и повторно загружать одинаковые, часто большие изображения снова и снова, каждый раз, когда они видят тег, независимо от максимального возраста или любого другого http- заголовок (который я мог бы подумать, чтобы попробовать). Хорошо, я понимаю, почему «динамический» необходим для реально-динамических приложений cgi. Но должен быть способ сказать браузеру «статический». Кажется, нет никакого стандартного способа, поэтому вот мой kludge …

На стороне сервера, я собираюсь написать короткую cgi-программу под названием checkcache.cgi? выражение, которое проверяет каталог кэша для имени файла md5hash ( выражение ) , т. е. проверяет, уже ли кэшировано желаемое изображение. И его вывод в stdout будет обычным http-заголовком, заканчивающимся текстом / текстом, за которым следует либо полный путь / filename.ext в кешированный файл, соответствующий выражению , либо «notfound», если желаемое изображение еще не существует ,

На стороне клиента, а не непосредственно писать теги <img>, я напишу php-скрипт, который примет желаемое выражение и сделает следующее. Во-первых, он использует curl для curl_exec () checkcache.cgi. Затем, если кешированный файл уже существует, echo является статическим тегом <img>, с src = "http: //etc/filename.gif" , используя имя файла, возвращаемое checkcache. Но если checkcache возвращает «not found», то это echo – динамический тег для динамического запуска gifprogram.cgi.

Так как checkcache испускает только несколько десятков байтов (а не некоторые из этих gif, которые могут иногда запускаться на половину MB или более), он должен идти очень быстро. Итак, мой вопрос снова – вышеупомянутая стратегия будет работать, правильно? Или что с этим не так? Или вы можете предложить более простую идею? Благодарю.

————————————————– —————
Редактировать обновление: Да, это работает. В заключение. Просто ужасно сложный способ выполнить то, что я думаю, должно быть простой задачей. И мне все равно было бы интересно изучить более простую процедуру.

Related of "Динамические теги <img> излишне перезагружают статические изображения"