If-Modified-Since
funciona bem para recursos únicos, onde é rápido e fácil determinar se o recurso foi modificado. Por exemplo, os servidores HTTP possuem essa funcionalidade integrada em arquivos estáticos, já que ela pode usar o registro de data e hora do arquivo. O conceito geral é que o processamento do recurso é mais caro do que determinar sua data de modificação. Eu consideraria isso para recursos únicos, mas não para coleções.
Existem vários esquemas de cache para escolher, e você deve usar apenas o mais apropriado para resolver a necessidade. Em alguns casos, o armazenamento em cache é prejudicial. Exemplos:
- Os resultados são obrigados a alterar cada solicitação (ou seja, alta taxa de alteração)
- Os proxies podem quebrar esquemas de armazenamento em cache que são específicos do usuário (por exemplo, um cenário de caixa de entrada)
- O custo de determinar se o item é mais recente é o mesmo que recuperá-lo (ou seja, a diferença de tempo apenas para verificar uma data e obter um registro inteiro de um banco de dados é geralmente insignificante, mas fazendo duas consultas quando piora as coisas)
Eu fui mordido por um número de bugs de cache induzidos por proxy, particularmente servidores proxy antigos e não bem mantidos em redes de clientes. Teste com vários usuários para garantir que seus esforços de armazenamento em cache não piorem as coisas.