Estou usando o lighttpd para servir arquivos estáticos. Eu tenho um monte de imagens em um diretório que eu atualizo regularmente. Isso mudará o conteúdo do arquivo (e o tamanho do arquivo), bem como a data da modificação, mas não o nome do arquivo.
Quando acesso os arquivos por meio de http, as atualizações não são levadas em consideração e o lighty serve o arquivo antigo. Posso renomear manualmente o arquivo para algo diferente, o lighttpd retornará um erro 404 e, se eu renomear meu arquivo novamente, obterá a versão atualizada correta. Parece que o lightty está usando algum tipo de mecanismo de cache próprio (o que é bom) para retornar arquivos estáticos. Infelizmente, parece que esse mecanismo não se atualiza quando os arquivos são modificados.
Eu verifiquei o Wireshark e meu navegador está realmente fazendo uma solicitação para o arquivo, não é um problema de cache do navegador. Ele retorna 200 OK ao solicitá-lo de um cache vazio e 304 304 não modificado de outra forma, conforme o esperado. Mas o arquivo é retornado com um cabeçalho Last-Modified errado que não reflete a data real da última modificação.
Talvez haja alguma diretiva de configuração que eu não conheça?
Gostaria que os arquivos retornados pelo lighty refletissem diretamente as alterações feitas no disco ou, pelo menos, pudessem invalidar seu cache.
Atualização para quem segue esta pergunta: Encontrei um culpado. Se eu atualizar um arquivo estático, o Lighty não retornará o novo conteúdo, mas o novo Comprimento de Conteúdo em seus cabeçalhos, resultando em lixo exibido. Se eu compactar o arquivo usando mod_compress, o problema desaparecerá, pois o mod_compress usa seu próprio sistema de cache. Infelizmente, não consigo compactar todos os arquivos (arquivos de imagem, por exemplo). Portanto, é apenas uma correção parcial, mas voltarei a ela mais tarde e encontrarei uma solução.