Etag é uma boa ideia, mas seu cabeçalho expira a impede. Por que não apenas definir seu cabeçalho de expiração para um valor sã? Muitas pessoas definem o prazo para datas loucas, que para um cliente configurado corretamente fará com que o cliente nem envie uma solicitação ao servidor.
Primeiro, defina sua expiração para algo sensato como request date + 1 week
(qualquer que seja seu ciclo de lançamento esperado). Em seguida, os clientes que seguirem corretamente as especificações para os cabeçalhos de expiração verificarão novamente após esse período de tempo. É muito mais simples e confiável do que tentar armazenar em cache tudo o que é implantado.
EDIT: Eu assumi que o exemplo que você deu foi sua configuração. Eu não quero dizer que soa duro, mas eu vejo pessoas fazendo coisas bobas com o cache o tempo todo.