É difícil ser específico, pois isso exigiria muito mais informações. Se as imagens não forem geradas dinamicamente em cada solicitação, faria sentido não passá-las por meio de um script a cada vez, ou seja, torná-las estáticas. Se as imagens não mudam com freqüência, eu tentaria armazenar a maioria delas na memória. Você pode evitar um monte de E / S de disco, já que muitas imagens pequenas podem ser colocadas na memória por serem tão pequenas.
Temos experiências muito boas com o uso do Verniz para isso. É um chamado cache de proxy reverso, o que significa que ele receberá solicitações recebidas dos clientes, verificará seu cache, servirá o objeto solicitado diretamente do cache ou o recuperará primeiro do servidor nginx de backend. O verniz pode lidar facilmente com muitos milhares de solicitações por segundo com uso muito baixo de CPU e E / S. Os tempos de resposta são muito rápidos. Estamos recebendo tempos de resposta de 20 a 30 ms, e metade disso é o que leva os elétrons a viajar para lá e para cá.
Coloque o verniz na frente do nginx e certifique-se de que cada imagem exclusiva tenha um URL exclusivo. Coloque alguns gigabytes de RAM em seu servidor e configure o Varnish para usar a maior parte dele em seu cache. Se as suas imagens forem 1-2kB, 1GB ou RAM podem armazenar em cache cerca de 500-1000 imagens. O verniz funciona bem com seu conjunto de regras padrão, mas é muito sintonizável, o que lhe dá uma vantagem sobre a maioria dos outros caches de proxy.
Certifique-se de que seu aplicativo não define cookies no domínio ou ajuste o verniz para descartar cookies para os URLs que apontam para as imagens, pois ele tomará o cuidado de não armazenar a solicitação em cache se ela contiver cookies. Além disso, faça com que seu aplicativo retorne os cabeçalhos de expiração (consulte "Cache-Control: max-age") que estão longe o suficiente no futuro para tornar o armazenamento em cache útil. É fácil definir uma duração máxima de semanas e, se um objeto precisar expirar, seu aplicativo poderá limpar o objeto do cache do Verniz ou apenas fornecer a nova imagem em um novo URL.