1

たとえば、トラフィックの多い Web サーバーで。

ファイルを切り替えるときの問題を減らすために、私は通常、古いファイルの名前を変更してから、新しいファイルの名前を変更します。

少し前に、ファイルの名前を変更しても「inodeデータ」は変更されないため、ファイルを読み取るプロセスは問題なく読み取りを続けることができると言われました。もちろん、新しいファイルをコピーするよりも、一時コピーの名前を変更する方が高速で安全です。

これはまだベストプラクティスですか?そうでない場合はどうしますか?

4

1 に答える 1

1

Apache http-server を使用していると仮定します。

Apache は通常、カーネル関数 sendfile を使用して静的ファイルを送信します。つまり、ファイルの内容をキャッシュし、いつ変更されたかを追跡するのはカーネル次第です。

新しいファイルを作成してから、古いファイルを新しいファイルに置き換える必要があります。

mv newfile oldfile

その後、古いファイルの代わりに新しいファイルの内容が提供されます。HTTP レベルで有効になっているキャッシュ設定は、ブラウザとプロキシが古いファイルを配信するか新しいファイルを配信するかに影響する可能性があることに注意してください。

于 2010-04-06T12:48:04.440 に答える