私はapache
/mod_dav
とdavfs2
すべて同じホストにいます。davfs2
Apacheサービスの内容をローカルファイルシステムにマウントするために使用されます(一種のループバック)。目的は、提供されたファイルコンテンツが動的であり、PHPを介してpostgresデータベースから来ることです。この場合、ファイルは定期的に変更され、メールプログラムから読み取られるEメールフッター/免責事項です。
cp
これはほとんどうまく機能しますが、davディレクトリからファイルシステムの他の部分にファイルを移動しようとすると、cp
davfs2で「ファイルが変更されたことを確認する」が実行されないようです。キャッシュされたコピーのみを取得します。 PHPファイルは変更されず、データベースの内容が更新されたため、動的コンテンツのみが変更されました。
一方、cp
5秒後にその操作を繰り返すと、正しいファイルの内容がコピーされます。私は次のスクリプトで終わりました。
#!/bin/bash
cp /root/pgdav/disclaimer.html /etc/postfix/disclaimer.html
sleep 5
cp /root/pgdav/disclaimer.html /etc/postfix/disclaimer.html
PHPのキャッシュ関連ヘッダ設定は次のとおりです。
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
私はfile_refresh 0
解決davfs2.conf
しました
私の質問は:この動作を修正するために欠けている他の設定はありますか?
答え1
私はdavfs2メーリングリストから答えを得て、ここで共有したいと思いました:
ETagヘッダーを提供していることを確認した後、問題は消えました。