dav2fs problema de cache no Debian Squeeze

2

Eu tenho apache / mod_dav e davfs2 no mesmo host. davfs2 é usado para montar o que o Apache está servindo no sistema de arquivos local - uma espécie de loopback. O objetivo é que o conteúdo dos arquivos atendidos seja dinâmico e venha de um banco de dados postgres via php. Nesse caso, o arquivo é um rodapé / aviso de e-mail que muda periodicamente e é lido pelo programa de e-mail.

Isso funciona muito bem, mas quando eu tento cp um arquivo do diretório dav para outra parte do sistema de arquivos, ele cp parece não ativar o comando 'has the file changed' no davfs2 - apenas obtém a cópia em cache. Observe que o arquivo php não mudou, apenas o conteúdo dinâmico porque algo foi atualizado no banco de dados.

Por outro lado, se eu cp novamente 5 segundos depois, o conteúdo do arquivo correto for copiado. Acabei com um script como este:

#!/bin/bash
cp /root/pgdav/disclaimer.html /etc/postfix/disclaimer.html
sleep 5
cp /root/pgdav/disclaimer.html /etc/postfix/disclaimer.html

Os cabeçalhos relacionados ao cache no php são definidos da seguinte forma:

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Eu configurei file_refresh 0 em davfs2.conf .

Minha pergunta é: há algum outro cenário que estou perdendo para corrigir esse comportamento?

    
por Jack Douglas 14.01.2012 / 14:35

1 resposta

0

Eu recebi minha resposta das listas de discussão do davfs2 e pensei em compartilhá-la aqui:

On open davfs2 will send a conditional GET request, which depends on correct Etag values.

Depois que eu me certifiquei de que estava atendendo os cabeçalhos do ETag, o problema desapareceu.

    
por 19.01.2012 / 20:08