Debian Squeeze 上的 dav2fs 缓存问题

Debian Squeeze 上的 dav2fs 缓存问题

我有apache/mod_davdavfs2所有在同一主机上。davfs2用于将 Apache 服务的内容挂载到本地文件系统 - 一种环回。目的是所提供的文件内容是动态的,并且通过 php 来自 postgres 数据库。在这种情况下,该文件是定期更改并由邮件程序读取的电子邮件页脚/免责声明。

这大部分工作得很好,但是当我尝试将cp文件从 dav 目录转移到文件系统的另一部分时,它cp似乎不会触发 davfs2 中的“文件是否已更改”检查 - 它只是获取缓存的副本。请注意,php 文件并未更改,仅更改了动态内容,因为数据库中的某些内容已更新。

另一方面,如果cp5 秒后再次进行操作,则会复制正确的文件内容。我最终得到了这样的脚本:

#!/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 邮件列表中得到了答案,并认为我应该在这里分享:

打开时,davfs2 将发送一个条件 GET 请求,这取决于正确的 Etag 值。

一旦我确定我正在提供 ETag 标头,问题就消失了。

相关内容