Вы можете использовать ETAGs на своих миниатюрах.Это предотвратит передачу фактических данных миниатюр, если они не изменились (то есть все еще имеют тот же хеш).Тем не менее, вы все равно будете сталкиваться с HTTP-запросами клиентов, чтобы проверить, изменился ли ETAG (обычно на HTTP 304.
Но в сочетании с довольно коротким порогом свежести (скажем, пару минут), вы могли быдостигните компромисса между кэшированием и свежестью, сохраняя при этом ресурсы. Если вам нужна абсолютная свежесть, вам, возможно, придется придерживаться ETAG. Если вы создадите умную хеш-функцию, вы можете обрабатывать запросы ETAG на вашем внешнем балансировщике нагрузки (или по крайней мере рядом с ним)), что может быть довольно дешевым.
Редактировать: Добавить альтернативу из моего другого комментария.
Альтернативой может быть использование дополнительных параметров запроса для принудительного повторного извлечениякогда ресурс изменился, как предложено в другом ответе. Вариантом этой схемы (которая используется многими приложениями Rails) является добавление метки времени последнего изменения (или некоторого вида хэша) в качестве параметра к файлу, который изменяется только тогда, когдафайл на самом деле меняется. Как-то так, илиодин из вышеперечисленных методов, фактически единственный способ быть уверенным в том, что у вас не будет ненужных запросов проверки кэша, при этом всегда имея самый свежий ресурс.