PHPで画像をアップロードする際にキャッシュが発生しないようにするにはどうすればよいですか?
キャッシュされないアップロード済み画像を実現するには、次のいずれかの方法を使用できます。
- 画像アップロードフォームにランダムなパラメータを加える:
<form action="upload.php" enctype="multipart/form-data" method="post">
<input type="file" name="image">
<input type="hidden" name="timestamp" value="<?php echo time(); ?>">
<input type="submit" value="上传">
</form>
サーバ側のアップロードコードでは、このパラメータを省略することができますが、その場合、アップロードするたびにリクエストが固有に見えるようになり、ブラウザがアップロードした画像のキャッシュを防ぐことができます。
- 画像をアップロードするフォーム no-cache ヘッダーを追加
<form action="upload.php" enctype="multipart/form-data" method="post">
<input type="file" name="image">
<input type="hidden" name="no_cache" value="1">
<input type="submit" value="上传">
</form>
アップロードするコードの先頭に以下のコードを追加します。
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
これによりブラウザにはアップロードした画像をキャッシュしないように指示されます。
どの手法を用いる場合でも、サーバ側のアップロード処理コードでアップロードされた画像を処理・保存する必要があります。具体的な実装方法は使用するフレームワークやライブラリによって異なりますので、各ドキュメントやチュートリアルを参照して詳細を確認してください。