Также в дополнение к ответу @ Darin, вы встречали ETags ? Это один из распространенных способов реализации кэширования, как вы предлагаете. В первый раз, когда браузер запрашивает изображение, у вас не будет ETag, чтобы вы знали, как его обслуживать В следующий раз, когда будет сделан запрос, он предоставит ETag, который вы затем сможете использовать, чтобы узнать, нужно ли вернуть 304 или само изображение. В вашем примере вы будете проверять наличие ETag или нет.
С вашим предложенным решением меня может заинтересовать то, как вы идентифицируете первый запрос из последующих запросов (и от более чем одного клиента)