2017-03-02 12 views
1

現在、Symfony 3アプリケーションを使用しています。私は、ユーザーが画像をアップロードしてからクロップセクションを選択し、最後に特定の高さと幅のアバターを保存するサービスを作成しました。アバターは/web/img/uploads/avatar/フォルダーに保存されます。私はファイルに名前を付けるためにユーザーIDを使用しています。したがって、ID13のユーザーは、アバターを/web/img/uploads/avatar/13.pngに保存します。Symfony 3 - 瞬時に更新されない画像

私の問題は、ユーザーが自分のアバターを更新すると、そのファイルはフォルダ内で正しく置き換えられますが、実際のWebサイトでは表示されているアバターはしばらく前のアバターのままです。 dev環境では、これは新しいアバターが古いアバターを置き換える前に数分かかるようなものです。私がアバターのURL(localhost/app_dev.php/img/uploads/avatar/xxx.png)に行っても、しばらくの間古いアバターが表示されてから、新しいアバターに変わります。 Tho、ファイルシステムのアバターは、期待通りに即座に置き換えられます。

これはキャッシュからのものだと考えました。私はGoogle上でソリューションを探してみましたが、LiipImagineBundleとそのキャッシュマネージャーに関連していましたが、私はこのバンドルを使用していませんでした...

名前がわかってから古いアバターを削除しようとしました実際にイメージを切り取り保存する前に次のように。

if(file_exists($dst)) { 
    unlink($dst); 
} 

しかし、動作しません。まったく。

アイデア?

+0

これはブラウザのキャッシュです – bxN5

+0

そして、あなたのアバターを変更したことをユーザーに伝えること以外は、実際には何もできません。ブラウザが最終的にキャッシュを更新することを決めるまで、あなたの新しい絵が見えます。 ? また、私が推測するように画像の名前をランダム化するだけで、ユーザーが新しいアバターをアップロードするたびに新しいURLが得られるので、URLが変わるようにします。 – Kishlin

+0

クライアントのヘッダーを送信しようとしました(キャッシュコントロール:no-cache、再検証する必要があります) – bxN5

答えて

2

これは間違いなくbxN5というブラウザキャッシュです。しかし、私はヘッダーを変更することに同意していない。キャッシュヘッダーを変更することでこれを管理すると、これらのイメージのキャッシュを完全に削除するか、Webブラウザーにサーバーに確認させる必要があります(ダウンロードバイト数は少なくなりますが、

イメージ名を変更してイメージURLを変更したり、クエリ文字列を追加したりするのが良い方法だと思います。いずれの場合も、イメージのバージョン識別子が必要です。画像の変更日(タイムスタンプ)を使用することができます。

+0

うん、私はちょうどランダムな名前を使用する、それは最も簡単なオプションです。 – Kishlin

関連する問題